zoukankan      html  css  js  c++  java
  • 读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了

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

  • 相关阅读:
    详解Office Add-in 清单文件
    在dotnet core web api中支持CORS(跨域访问)
    Office 365 机器人(Bot)开发入门
    人工智能背景下的Office 365现状和发展趋势
    观未见,行不止 —— Power BI 两周年技术和方案交流圆桌会议纪实
    基于Office 365的随需应变业务应用平台
    实战Excel Add-in的三种玩法
    Office Add-in 设计规范与最佳实践
    在Visual Studio Code中开发Office Add-in
    在Visual Studio 中开发Office Add-in
  • 原文地址:https://www.cnblogs.com/bobofsj11/p/1506868.html
Copyright © 2011-2022 走看看