设计模式学习——建造者模式(生成器模式)

所有配套代码均在github上:https://github.com/ZHONGHuanGit/DesignPattern

简介:

建造者模式也叫做生成器模式,定义为:封装一个产品的构造过程,并且按此步骤构造。

建造者模式(生成器模式)属于创建类模式,和工厂模式相比,你会觉得有点类似,但是有区别之处。不过,建议在看下去之前,得明白三个工厂模式,如果你记得不太清楚了,可以看这里,简单工厂,工厂方法,抽象工厂。

UML类图:

看一下uml类图。这一部分,如果不清楚,可以先看下面的场景部分,再回过头来看。

从上面的类图中,可以看到有四个要素。

1          AbstractBuilder(抽象建造者):引入抽象建造者的目的,是为了将建造的具体过程交与它的子类来实现。这样更容易扩展。一般会有两部分抽象方法,一部分用来建造产品,一个是用来返回产品。如上面,buildPart1和buildPart2用来构造产品,retrieveResult返回产品。

2          ConcreteBuilder(具体建造者):实现抽象建造者的抽象方法,之所以这样,是为了便于不同情况下的扩充。

3          Director(导演者):负责调用适当的建造者来组建产品,导演类一般不与产品类发生依赖关系,与导演类直接交互的是建造者类。一般来说,导演类被用来封装程序中易变的部分。

4          Product(产品类):一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。

时间: 2024-10-30 16:14:07

设计模式学习——建造者模式(生成器模式)的相关文章

设计模式学习笔记(九)—Singleton模式

<设计模式>一书对Singleton模式是这样描述的: 保证一个类只有一个实例,并提供一个访问它的全局访问点. 这个模式比较简单,下面给出一个例子: public class Singleton { private static Singleton instance; private Singleton(){ } public static Singleton getInstance(){ if(instance==null) instance=new Singleton(); return

设计模式学习:装饰者模式

装饰者(Decorator)模式又叫包装模式,用组合的方式来拓展对象的功能,是继承关系的一个替代方案. 定义说明:装饰者模式动态地将责任附加到对象上,若要扩展功能,装饰着提供了比继承更富有弹性的替代方案. 从实例中体会: 实例来自 HeadFirst一书(建议读该书,例子太赞了),是星巴克的例子.星巴克的咖啡很有名(穷学生,现在喝不起o(╯□╰)o).他们供应很多种类的咖啡.一开始他们的类设计是下面这样的. 但是因为购买咖啡的时候,会加入更重调料,比如:蒸奶(Steamed Milk),豆浆(S

设计模式、企业应用架构模式和架构模式学习总结

设计模式: 简单工厂模式 工厂方法模式 抽象工厂方法模式 单例模式 外观模式 生成器模式 原形模式 中介者模式 代理模式 观察者模式 命令模式 迭代器模式 组合模式 模版方法模式 策略模式 状态模式 备忘录模式 享元模式 解释器模式 装饰器模式 职责链模式 桥接模式 访问者模式 企业应用架构模式 事务脚本 大家都懂的写法 领域模型 DDD的建模方法:领域对象.value对象 Unit of Work Entity Framework已经集成这功能了 Lazy Load 同上 查询对象 针对Spe

设计模式学习笔记系列

设计模式学习笔记(二十二)-FlyWeight享元模式 设计模式学习笔记(二十一)-Composite模式 设计模式学习笔记(二十)-Visitor访问者模式 设计模式学习笔记(十九)-Chain of Responsibility职责链模式 设计模式学习笔记(十八)-Mediator中介者模式 设计模式学习笔记(十七)-Memento备忘录模式 设计模式学习笔记(十六)-Proxy模式 设计模式学习笔记(十五)-State模式 设计模式学习笔记(十四)-Command模式 设计模式学习笔记(十

php 建造者生成器模式学习笔记

适用场景: 1. 需要生成的产品对象有复杂的内部结构. 2. 需要生成的产品对象的属性相互依赖,生成器模式可以强迫生成顺序. 3. 在对象创建过程中会使用到系统中的一些其它对象,这些对象在产品对象的创建过程中不易得到. 使用效果: 1. 生成器模式的使用使得产品的内部表象可以独立的变化.使用生成器模式可以使客户端不必知道产品内部组成的细节. 2. 每一个Builder都相对独立,而与其它的Builder无关. 3. 模式所建造的最终产品更易于控制. <?php /** * Created by

跟屌丝大哥学习设计模式--生成器模式(Builder)

Builder 模式的重心在于分离构建算法和具体的构造实现,从而使构建算法可以重用. Builder 模式的构成分为两部分:一部分是Builder接口,定义了如何构建各个部件,并装配到产品中去:另一部分是Director,定义如何来构建产品,Director 负责整体的构建算法,而且通常是分步来执行的. 注:这里的构建算法是指:通过什么样的方式来组装产品:构建产品指的是:构建一个复杂对象. Builder 模式就是将构建产品部件和组装产品的过程分开,即实现了产品部件和组装产品过程的解耦,可以使得

跟屌丝大哥学习设计模式---生成器模式(Builder)解析例子

生成器模式属于对象结构型模式,其意图是将一个复杂对象的构建与他的表示分离,使得同样的构建创建过程可以创建不同的表示. 适用性: 1.         当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时 2.         当构造过程必须允许被构造的对象有不同的表示时.   参与者:        生成器Builder:为创建一个Product对象的各个部件指定抽象接口(AnimalBuilder).        具体生成器ConcreteBuilder:实现Builder接口

设计模式之建造者模式

设计模式,六大设计原则,类的特性 总纲 http://blog.csdn.net/fenglailea/article/details/52733435 风.fox 建造者模式(Builder Pattern) 也叫生成器模式. 定义:讲一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示 通用类图 组成 产品类 Product 通常实现了模版方法模式,也就是有模版方法和基本方法. 抽象建造者 Builder 规范产品的组建,一般是由子类实现 具体建造者 ConcreteBui

设计模式学习笔记(十)—Factory Method模式

<设计模式>一书对Factory Method模式是这样描述的: 定义一个用于创建对象的接口,让子类决定实例化哪一个类.FactoryMethod使一个类的实例化延迟到其子类. 我的理解:FatoryMethod模式是一种创建型模式,定义一个用于创建对象的接口的意思是说,我们要定义一个用于创建对象的接口(或者说抽象类,实际上就是个抽象工厂abstractFactory),它的内部有一个创建对象的方法,这个方法的返回值是一个接口(或者抽象类)的类型,这个方法就是FactoryMethod:让子类