美文网首页
抽象工厂模式

抽象工厂模式

作者: 定金喜 | 来源:发表于2020-05-24 14:10 被阅读0次

    1.抽象工厂模式的实现方式

    网上主要有两种实现抽象工厂模式的方法
    第一种参考文章:https://www.runoob.com/design-pattern/abstract-factory-pattern.html
    第二种参考文章:http://c.biancheng.net/view/1351.html
    主要是对这两种方案的优缺点进行比较:
    第一种方案的类图:

    类结构图1
    优点:将每种类型的产品族包装成一个工厂,每个工厂里有该类型所有产品的集合

    第二种方案的类图:


    类结构图2

    两种优缺点比较:
    1.具体工厂的定义不同,第一种定义的具体工厂,是每种产品族的所有产品的创建工厂,第二种定义的具体工厂,是真正的每个具体工厂中所使用到的产品,例如现在有A和B两个工厂,但是A工厂只生产产品P1和产品P2,B工厂只生产产品P3和P4,则按照第二种方法,A工厂里面只能创建产品P1和P2,B工厂只能创建P3和P4 ,如果需要增加,则在各自的工厂中增加;按照第一种方法,每个工厂都可以创建所有类型的产品,个人建议第二种方法更合理;
    2.两种方法获取具体产品的方式不同,第一种需要定义枚举类型,根据类型去判断需要创建那种类型的工厂和产品,有很多if else的判断,第二种方式不需要,使用起来更方便

    2.个人建议的抽象工厂实现方案

    个人建议采用两种相结合的方案
    A工厂和B工厂是具体工厂
    产品族工厂 FP1和FP2,产品族工厂有创建所有产品的接口
    例如A工厂需要创建一个产品时,需要调用FP1或者FP2去获取,这样两者集合,比较灵活,如果A工厂需要增加一种产品时,可以只在A工厂去增加代码,其他地方不需要更改,而且每个工厂只能获取这个工厂提供的产品,也可以使代码更安全

    相关文章

      网友评论

          本文标题:抽象工厂模式

          本文链接:https://www.haomeiwen.com/subject/zfakahtx.html