• 读TerryLee 2抽象工厂


    抽象工厂模式提供了一个创建一系列相关或相互依赖对象的接口,运用抽象工厂模式的关键点在于应对“多系列对象创建”的需求变化。一句话,学会了抽象工厂模式,你将理解OOP的精华:面向接口编程。

    看了TerryLee 的例子 自己加了一个

    先定义两个抽象类

     

        public  abstract class Tax
        {
            
    public abstract double GetTax();
        }

        
    public abstract  class Bonus
        {
            
    public abstract double GetBonus();
        }

    为什么要定义这两个类呢?

    一个维护性良好的系统应该遵循“开闭原则”。即:封闭对原来代码的修改,开放对原来代码的扩展(如类的继承,接口的实现)

    这相当于定义了两个接口 后面不管哪种业务都可以继承

    重写这两个抽象类的方法:

    Code

    为了方便调用不同的业务切换 我们需要一个工厂 当然我们可以把他抽象出来

        public  abstract  class AbstractFacory
        {
            
    public abstract Tax CreateTax();
            
    public abstract Bonus CreateBonus();
        }

    这个时候可以感觉到当时定义Tax,Bouns两个抽象类的好处了

    实现我们自己的类

    Code

    当然我们要知道改实例化哪个工厂 方式很多。做好的方法当然是利用反射机制 因为这样可以提供代码隐蔽性 只用修改一下配置文件即可

    修改一下抽象工厂添加一个静态方法来实例化工厂。 当然也可以独立出来

    Code

    客户端调用:

            AbstractFacory af = AbstractFacory.GetInstance();
                
    double gz = af.CreateTax().GetTax();
                
    double jj = af.CreateBonus().GetBonus();

    这样客户端仅仅依赖的是抽象类 不用去管其他的东西

    比如我要添加一新的业务只需要添加两个新的业务规则newTax,newBonus,以及一个newFactory 就OK了

    最关键的是 不管添加或者修改 都不会影响到其他的业务

  • 相关阅读:
    H5及微信中唤起app的解决方案
    html5统计数据上报API:SendBeacon
    基于webpack4的react开发环境配置
    electron-vue开发爬坑指南
    利用git 进行多人协作开发
    js 性能优化利器:prepack
    各种渲染方式对比解析
    Nuxt.js部署应用的方式
    微信小程序--data的赋值与取值
    甘超波:什么是个人定位
  • 原文地址:https://www.cnblogs.com/bobofsj11/p/1506868.html
Copyright © 2020-2023  润新知