设计模式之--生成器模式与抽象工厂模式的比较
2011-07-22 20:12
351 查看
从形式上来讲,通过角色合并,方法功能的转变,抽象工厂可以和生成器模式形式上取得一致(比如抽象工厂只处理一个产品族,工厂方法都处理同一个产品)。但注意,这仅仅是形式上的,实际上,抽象工厂和生成器模式有着本质的区别:
1、生成器模式是为了构造一个复杂的产品,而且购造这个产品遵循一定的规则(相同的过程),而抽象工厂则是为了创建成族的产品(系列产品),同族产品的构造在逻辑上并不存在必然的联系(唯一必然的联系就是大家都属于一族)。
2、生成器模式的构造方法是为了构造同一个产品,因此必须有指导者来协调进行工作,构造方法之间存在必然的业务联系,而抽象工厂的构造方法都是独立去构建自己的产品对象,因此他们不存在必然的联系。在生成器模式中客户端不直接调用构建产品部分的方法来获取最终产品,而抽象工厂中客户端是通过调用不同的工厂方法获取不同的产品。
3.在生成器模式中,那些用来构造产品不同部分的方法一般都实现为Protected形式,以防止客户端通过调用这种方法活得不可预料的结果,而抽象工厂中的这些方法必须为Public形式。否则客户无法调用来获得产品结果;
4.生成器模式的角色有生成器,产品和指导者,而抽象工厂的角色有工厂和产品。无论角色和功能怎样变换,但所含的业务逻辑角色都应该存在,这也是两个模式的业务本质。
1、生成器模式是为了构造一个复杂的产品,而且购造这个产品遵循一定的规则(相同的过程),而抽象工厂则是为了创建成族的产品(系列产品),同族产品的构造在逻辑上并不存在必然的联系(唯一必然的联系就是大家都属于一族)。
2、生成器模式的构造方法是为了构造同一个产品,因此必须有指导者来协调进行工作,构造方法之间存在必然的业务联系,而抽象工厂的构造方法都是独立去构建自己的产品对象,因此他们不存在必然的联系。在生成器模式中客户端不直接调用构建产品部分的方法来获取最终产品,而抽象工厂中客户端是通过调用不同的工厂方法获取不同的产品。
3.在生成器模式中,那些用来构造产品不同部分的方法一般都实现为Protected形式,以防止客户端通过调用这种方法活得不可预料的结果,而抽象工厂中的这些方法必须为Public形式。否则客户无法调用来获得产品结果;
4.生成器模式的角色有生成器,产品和指导者,而抽象工厂的角色有工厂和产品。无论角色和功能怎样变换,但所含的业务逻辑角色都应该存在,这也是两个模式的业务本质。
相关文章推荐
- 设计模式之--生成器模式与抽象工厂模式的比较
- 设计模式——抽象工厂模式及在jdk中的应用+几种工厂模式的比较
- 设计模式——简单工厂模式—工厂方法模式—抽象工厂模式(比较)
- 设计模式——简单工厂模式—工厂方法模式—抽象工厂模式(比较)
- SPRING与设计模式---生成器模式
- Java开发中的23种设计模式之二:抽象工厂模式(Abstract Factory)
- 23种设计模式(3):抽象工厂模式
- 设计模式(四)———工厂设计模式的比较
- 我理解的设计模式-------抽象工厂模式
- 设计模式(十一)抽象工厂模式
- 一起来学设计模式(4)——抽象工厂模式
- 设计模式学习——建造者模式(Builder Pattern)/生成器模式
- 【设计模式】1、抽象工厂模式
- Java设计模式—工厂方法模式&抽象工厂模式
- C#设计模式——生成器模式(Builder Pattern)
- 设计模式-抽象工厂模式(Abstract Factory)
- 设计模式之抽象工厂模式
- 设计模式C++实现十一:抽象工厂模式
- 设计模式——抽象工厂模式详解
- 设计模式:抽象工厂模式