zoukankan      html  css  js  c++  java
  • 北风设计模式课程---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代码目录结构

     
  • 相关阅读:
    第二十章 用户管理(一)
    第十九章 Linux中常用字符的特殊含义
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/10947404.html
Copyright © 2011-2022 走看看