建造者模式,即生成器模式

解释:

  将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不用的表示。

结构图:

  

   

  

  

优点:

  可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。

  使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以如需要改变一个产品的内部,只需要再定义一个具体的建造者就可以了。

  如果使用了建造者模式,用户就只需指定需要建造的类型就可以得到它们,而具体建造过程、细节就不需要知道了。

使用环境:

  主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。

  当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时适用的模式。

使用建议:

  对于Builder类的细化,需要权衡。如果这些细节是每个具体的子类都需要构建的,那就应该加进去。反之,则没有必要。

  其实构建模式是逐步构造产品的,所以建造者的Builder类里的那些建造方法必须要足够普遍,以便为各种类型的具体建造者构造。

示例:

  

  抽象Builder类:构建的部件,防止任何子类遗忘。

  

  指挥者类:控制构建过程。用来隔离用户与建造过程的关联。

  

  客户端:

  

扩展:

  1.依赖倒转原则:抽象不应该依赖细节,细节应该依赖于抽象。

时间: 2024-10-12 06:31:14

建造者模式,即生成器模式的相关文章

设计模式解密(6) - 建造者模式(生成器模式)

1.简介 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 分解一下定义: 1.复杂对象的表示: 2.复杂对象的构建过程: 3.可分离的通用构建过程,也适用于其它复杂对象的表示: 4.适用于一些基本部件不会变,而其组合经常变化的时候. 英文:Builder 类型:创建类模式 2.原理及组成 引:类图 四个要素: 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量.在本类图中,产品类是一个具体的类,而非抽象类. 实际编程中,产品

模式02 生成器模式(Builder)

1. 意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 2. 结构 此模式的结构如下图所示. 3. 参与者 Builder-- 为创建一个Product对象的各个部件指定抽象接口. ConcreteBuilder-- 实现Builder的接口以构造和装配该产品的各个部件.-- 定义并明确它所创建的表示.-- 提供一个检索产品的接口. Director-- 构造一个使用Builder接口的对象. Product-- 表示被构造的复杂对象.ConcreteBuilde

生成器模式(建造者模式)

生成器模式(或者叫建造者模式) 将一个复杂类的 表示 与其 构建过程 相分离,使得相同的构建过程.能够得出不同的表示. 如果我们使用建造者模式,那么用户只需要指定类型就好了,过程在调用的时候就不需要想了.因为我们已经定义好了. 其中Builder定义一个构建过程. 而ConcretBuilder是按照这一过程实现的不同表示. Director是整个模式的指挥者.客户端在调用的时候,要告诉Director具体使用哪个ConcreBuilder.其实也就是传递一个Builder对象.

设计模式开始--生成器模式

生成器模式 设计模式的原则:尽量暴漏在主程序里面的代码扩展性强一些,多用接口和虚拟类,少用实现类,这样再改程序的时候就方便的多了. 1.作用:一个Product类的产生需要多个其他的类Unit顺序生成之后组合而成,而且这些Unit的产生方法是不固定的. 举例而言一个对象会有一些重要的性质,在它们没有恰当的值之前,对象不能作为一个完整的产品使用.比如,一个电子邮件有发件人地址.收件人地址.主题.内容.附录等部分,而在最起码的收件人地址未被赋值之前,这个电子邮件不能发出.有些情况下,一个对象的一些性

跟着实例学习设计模式-生成器模式(builder)

生成器模式是创建型设计模式. 设计意图:将一个复杂的类表示与其构造相分离,使得相同的构建过程能够得出不同的表示. 实例类图: IVehicleBuilder:抽象建造者,为创建一个Vehicle对象并创建它的相关部件指定的抽象接口,把产品的生产过程分解为不同的步骤,从而使具体的建造者在具体的建造步骤上具有更多弹性,从而创造出不同表示的产品.(这里就是小车和卡车) CarBuilder.TrunkBuilder:具体建造者,实现IVehicleBuilder接口,构造和装配产品的各个部件定义并明确

生成器模式(Builder Pattern)

一. 建造者(Builder)模式 建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象. 对象性质的建造 有些情况下,一个对象会有一些重要的性质,在它们没有恰当的值之前,对象不能作为一个完整的产品使用.比如,一个电子邮件有发件人地址.收件人地址.主题.内容.附录等部分,而在最起码的收件人地址未被赋值之前,这个电子邮件不能发出. 有些情况下,一个对象的一些性质必须按照某个顺序赋值才有意义.在某个性质没有赋值之前,另一个性质则无法赋值.

OC编程之道-创建对象之生成器模式

生成器模式也叫建造者模式,一般是用来构造复杂对象的一种模式.client(客户)-director(指导者)-builder(构造者)-product(产品). 生成器模式能帮助构建设计部件与表现的各种组合的对象.否则知道构建对象所有细节的director可能会变成一个庞大的“神”类.但是在做应用的时候一般不会遇到如此复杂的类(请求?),只有在做游戏时,构造涉及各种特征的角色的时候,应该好好使用该模式. 例子: 一个追逐游戏,假定有两个角色,敌人和游戏者.这两个角色有一些基本trait,如力量s

设计模式(二): BUILDER生成器模式 -- 创建型模式

1.定义 将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式. 2.适用场景 1. 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时. 2. 当构造过程必须允许被构造的对象有不同表示时. 3.评价 1. 它使你可以改变一个产品的内部表示. Builder对象提供给导向器一个构造产品的抽象接口.该接口使得生成器可以隐藏这个产品的表示和内部结构.它同时也隐藏了该产品是如何装配的.因为产品是通过抽象接口构造的,你在改变该产品的内部表

设计模式(2): 生成器模式

生成器模式(英:Builder Pattern)是一种设计模式,又名:建造模式,是一种对象构建模式.它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象. 前面一篇文章提到的抽象工厂模式与生成器相似,因为它也可以创建复杂对象.主要的区别是生成器模式着重于一步步构造一个复杂对象.而抽象工厂模式着重于多个系列的产品对象(简单的或是复杂的).生成器在最后的一步返回产品,而对于抽象工厂来说,产品是立即返回的. 意图:将一个复杂的构建与其表示相分离,

设计模式-生成器模式

前言 点击查看:设计模式系列 生成器模式(建造者模式/builder) 定义:将一个复杂的对象,分成多分,使同样的构建过程,能有不同的表示,这样的设计模式被称为建造者模式. 举例说明: 李嘉诚的遗嘱执行: 财产(产品角色):李嘉诚拥有众多复杂的财产框架,这里以现金与物品入例. 遗嘱(建造者):相当于建造者,分配现金与物品. 具体遗嘱(具体建造者):1.给大儿子的财产分配,2,给小儿子的财产分配. 律师(指导者角色):按照具体的遗嘱指令分配财产. 例子类图: 庞大的财产结构代码: // 财产(复杂