微信扫一扫打赏支持

北风设计模式课程---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代码目录结构

 

 

 

 
posted @ 2019-05-30 04:24  范仁义  阅读(214)  评论(0编辑  收藏  举报