• 北风设计模式课程---3、抽象工厂模式


    北风设计模式课程---3、抽象工厂模式

    一、总结

    一句话总结:

    抽象工厂模式相当于工厂方法模式增加了维度,增加的那个维度就是产品族。
    抽象工厂模式的作用是增加多个产品族的时候方便,增加产品族的时候符合开闭原则

    1、为什么抽象工厂模式叫抽象工厂模式?

    抽象工厂模式因为适用于多维情况,所以相比于工厂方法模式更加具有一般性,更加符合实际情况

    2、抽象工厂模式的特点和作用?

    和现实最接近:抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的。
    增加产品族方便:抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。

    3、产品族是什么?

    例如南方工厂里面生成的所有东西:水果分苹果和香蕉,苹果和香蕉又分南方和北方的,南方的工厂就可以生成南方的苹果和香蕉,同理北方工厂

    4、抽象工厂模式实例?

    水果分苹果和香蕉,苹果和香蕉又分南方和北方的
    南方的工厂就可以生成南方的苹果和香蕉,同理北方工厂
    抽象工厂:抽象工厂里面有生成苹果和生成香蕉两个抽象方法,南方和北方的水果工厂继承水果工厂

    5、抽象工厂模式中包含的角色及其职责?

    1.抽象工厂(Creator)角色:抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。
    2.具体工厂( Concrete  Creator)角色:具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象。
    3.抽象(Product)角色:抽象模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
    4.具体产品(Concrete Product)角色:抽象模式所创建的具体实例对象:


    总结:抽象工厂中方法对应产品结构,具体工厂对应产品族。

    6、抽象工厂模式在怎么样的扩展情况下满足开闭原则?

    扩展产品族,比如原来有南方工厂,北方工厂,现在增加一个温室工厂

    7、抽象工厂模式适应的实际情况是怎样的?

    多维模式:水果不仅分苹果和香蕉,还分南方和北方

    8、为什么说抽象工厂模式更加具有一般性,更加符合实际情况?

    抽象工厂模式应对的是多维模式:水果不仅分苹果和香蕉,还分南方和北方
    工厂方法模式应对的是单维模式:水果就分为苹果香蕉梨子等等等等,在一个维度上变化
    实际情况肯定大多都是多维模式

    9、抽象工厂模式对应的legend2中的实例?

    具体工厂:招募英雄工厂,投奔英雄工厂,英雄石英雄工厂
    抽象工厂:生成人族英雄方法,生成仙族英雄方法,生成魔族英雄方法
    抽象角色:英雄
    具体角色:人族英雄,仙族英雄,魔族英雄

    英雄不仅分种族,还分来源维度:招募来的英雄,投奔来的英雄,英雄石生成的英雄

    10、抽象工厂模式对应的legend2中的实例场景?

    英雄不仅分种族,还分来源维度:招募来的英雄,投奔来的英雄,英雄石生成的英雄

    11、抽象工厂模式优缺点是什么?

    优点:增加产品族,比如除了南方水果,北方水果,我想增加温室水果
    缺点:增加产品(产品等级)不方便,比如我除了香蕉苹果,我想增加梨子

    二、内容在总结中

    1、相关知识

     

    2、java代码目录结构

     
  • 相关阅读:
    C++中函数模板template的使用
    C++中模板template和类class的结合使用
    Python中shuffle函数
    Python中利用tkinter模块构建图形用户界面GUI
    Python中怎样初始化一个类类class?
    Python中字典的has_key方法在3.4版本中改为in
    Python中怎样对数据集整体进行映射转换类型
    matlab中怎样对矩阵的某一列进行排序而使得其他列对应移动??
    Python中怎样使用shape计算矩阵的行和列
    27.反射2.md
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/10947404.html
Copyright © 2020-2023  润新知