1、题目分析
-
- 它主要由三个角色组成,工厂类,抽象产品角色,具体产品角色。
在女娲造人这个题中,男人,女人,女娲工厂类为接口类,机器人都是具体产品角色 - 工厂方法模式
它主要由四个角色组成,抽象工厂角色,具体工厂角色,抽象产品角色,具体产品角色。抽象工厂是具体工厂必须实现的接口,具体工厂调用以创建对应的具体产品的对象,抽象产品是具体产品实现的接口,具体工厂角色所创建的对象就是此角色的实例。
在空调这个题中,空调工厂是工厂接口,海尔工厂和美的工厂都是具体工厂,产品接口类是抽象产品,海尔空调和美的空调都是具体产品。 - 抽象工厂模式
产品族的定义是位于不同产品等级结构中,功能相关联的产品组成的家族。它是最抽象,最具一般性的,给客户端提供一个接口,可以创建多个产品族中的产品对象。而它的角色与工厂方法模式如出一辙。
在电脑配件这一题中,PcRAM和MacCPU属于同一个产品族,PcQRAM和MacRAM属于同一个产品树(产品等级结构)。factory属于抽象工厂接口,Pcfactory和Macfactory属于具体工厂,CPU和RAM属于抽象产品接口,PcCPU和MacCPU实现CPU接口,PcRAM和MacRAM实现RAM接口。2、
- 它主要由三个角色组成,工厂类,抽象产品角色,具体产品角色。
2、类图设计(使用UML的类图结构设计)
女娲
空调
电脑
3、运行结果
4、经验归纳
通过这次编写程序,我学习到了三种设计模式的相似之处和区别,它们都是创建型模式,它们的功能都是帮助我们把对象的实例化部分抽取了出来,优化系统的架构,增强系统的扩展性。
需要注意的是,工厂模式的接口只会返回一种类型的实例。
区别:
- 简单工厂 :用来生产同一等级结构中的任意产品。
简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。(对于增加新的产品不可行)
②工厂模式 :用来生产同一等级结构中的固定产品。
工厂方法是针对每一种产品提供一个工厂类,通过不同的工厂实例来创建不同的产品实例。支持增加任意产品)
- 抽象工厂:用来生产产品族的全部产品。
应对产品族概念的。(对于增加新的产品不可行;支持增加产品族)