您的位置:首页 > 移动开发 > IOS开发

iOS设计模式之生成器

2015-07-21 13:55 190 查看

iOS设计模式之生成器

1.生成器模式的定义

(1): 将一个复杂的对象的构件与它的表示分离,使得同样的构建过程可以创建不同的表示
(2): 生成器模式除了客户之外还包含一个Director(指导者),和一个builder(生成器).客户端通过向指导者(Director)提出需求,指导者(Director)向bulider(生成器)提供信息来建造特定的产品.bulider根据特定的信息生产产品并返回给客户.

2:使用生成器的好处

构建某些对象有多种不同的方式,如果这些逻辑包含在构建这些对象的类的单一方法中,构建的逻辑就会很复杂(例如:针对各种构建需求的一大片潜逃if- else),如果分解为客户 — 指导者 — 生成器的关系,过程将变得易于管理.

3.生成器模式的UML



Builder :生成器接口,定义创建一个Product各个部件的操作
ConcreteBuilder:具体的生成器的实现类

Product:产品,表示被生成器构建的复杂的对象,包含多个部件

Director:指导者也称导向者,主要用来使用Builder接口
,已一个统一的接口创建Product对象


4 .生成器模式与抽象工厂模式的比较

从形式上来讲,通过角色合并,方法功能的转变,抽象工厂可以和生成器模式形式上取得一致(比如抽象工厂只处理一个产品族,工厂方法都处理同一个产品)。但注意,这仅仅是形式上的,实际上,抽象工厂和生成器模式有着本质的区别:

1、生成器模式是为了构造一个复杂的产品,而且购造这个产品遵循一定的规则(相同的过程),而抽象工厂则是为了创建成族的产品(系列产品),同族产品的构造在逻辑上并不存在必然的联系(唯一必然的联系就是大家都属于一族)。

2、生成器模式的构造方法是为了构造同一个产品,因此必须有指导者来协调进行工作,构造方法之间存在必然的业务联系,而抽象工厂的构造方法都是独立去构建自己的产品对象,因此他们不存在必然的联系。在生成器模式中客户端不直接调用构建产品部分的方法来获取最终产品,而抽象工厂中客户端是通过调用不同的工厂方法获取不同的产品。

3.在生成器模式中,那些用来构造产品不同部分的方法一般都实现为Protected形式,以防止客户端通过调用这种方法活得不可预料的结果,而抽象工厂中的这些方法必须为Public形式。否则客户无法调用来获得产品结果;

4.生成器模式的角色有生成器,产品和指导者,而抽象工厂的角色有工厂和产品。无论角色和功能怎样变换,但所含的业务逻辑角色都应该存在,这也是两个模式的业务本质。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息