北风设计模式课程---3、抽象工厂模式
一、总结
一句话总结:
抽象工厂模式相当于工厂方法模式增加了维度,增加的那个维度就是产品族。
抽象工厂模式的作用是增加多个产品族的时候方便,增加产品族的时候符合开闭原则
1、为什么抽象工厂模式叫抽象工厂模式?
抽象工厂模式因为适用于多维情况,所以相比于工厂方法模式更加具有一般性,更加符合实际情况
2、抽象工厂模式的特点和作用?
和现实最接近:抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的。
增加产品族方便:抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。
3、产品族是什么?
例如南方工厂里面生成的所有东西:水果分苹果和香蕉,苹果和香蕉又分南方和北方的,南方的工厂就可以生成南方的苹果和香蕉,同理北方工厂
4、抽象工厂模式实例?
水果分苹果和香蕉,苹果和香蕉又分南方和北方的
南方的工厂就可以生成南方的苹果和香蕉,同理北方工厂
抽象工厂:抽象工厂里面有生成苹果和生成香蕉两个抽象方法,南方和北方的水果工厂继承水果工厂
5、抽象工厂模式中包含的角色及其职责?
1.抽象工厂(Creator)角色:抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。
2.具体工厂( Concrete Creator)角色:具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象。
3.抽象(Product)角色:抽象模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
4.具体产品(Concrete Product)角色:抽象模式所创建的具体实例对象:
总结:抽象工厂中方法对应产品结构,具体工厂对应产品族。
6、抽象工厂模式在怎么样的扩展情况下满足开闭原则?
扩展产品族,比如原来有南方工厂,北方工厂,现在增加一个温室工厂
7、抽象工厂模式适应的实际情况是怎样的?
多维模式:水果不仅分苹果和香蕉,还分南方和北方
8、为什么说抽象工厂模式更加具有一般性,更加符合实际情况?
抽象工厂模式应对的是多维模式:水果不仅分苹果和香蕉,还分南方和北方
工厂方法模式应对的是单维模式:水果就分为苹果香蕉梨子等等等等,在一个维度上变化
实际情况肯定大多都是多维模式
9、抽象工厂模式对应的legend2中的实例?
具体工厂:招募英雄工厂,投奔英雄工厂,英雄石英雄工厂
抽象工厂:生成人族英雄方法,生成仙族英雄方法,生成魔族英雄方法
抽象角色:英雄
具体角色:人族英雄,仙族英雄,魔族英雄
英雄不仅分种族,还分来源维度:招募来的英雄,投奔来的英雄,英雄石生成的英雄