一, 概念
建造者模式是一个对象的创建模式,将一个产品的内部表现跟产品的生产过程分割开来,
从而可以使一个建造过程生成具有不同的内部表象的产品对象。
二, 结构
本模式涉及四个角色:
1), 抽象建造者(Builder):给 出一个抽象接口,以规范产品对象的各个组成成分的建造。
一般而言,此接口独立于应用程序的商业逻辑。模式中直接创建产品对象的是具体建造者
2), 具体建造者(ConcreteBuilder)角色:担任这个角色的是与应用程序紧密相关的一些类,
它们在应用程序调用下创建产品的实例。这个角色要完成的任务包括:
a.实现抽象建造者Builder所声明的接口,给出一步一步地完成创建产品实例的操作。
b.在建造过程完成后,提供产品的实例。
3), 导演者(Director)角色:担任这个角色的类调用具体建造者角色以创建产品对象。
导演者角色并没有产品类的具体知识,真正拥有产品类的具体知识的是具体建造者角色。
4), 产品(Product)角色:产品便是建造中的复杂对象。一般而言,
一个系统中会有多个的产品类,而且这些产品类并不一定有共同的接口,而完全可以是不相关联的。
重点:
1), 建造者(Builder)接口,定义了如何构建各个部件, 了解各个部件的实现及如何装配
2), 导演者知道如何组建产品, 负责整体构建的算法。
三,使用场景
1), 生成的产品对象有复杂的内部结构,
每一个内部成分本身可以是对象 也可以仅仅是一个对象(即产品对象)的一个组成部分。
2), 生成的产品对象的属性相互依赖。
建造模式可以强制实行一种分步骤进行的建造过程,因此,如果产品对象的一个属性必须在
另一个属性被赋值之后才可以被赋值。
3), 在对象创建过程中会使用到系统中的其他一些对象,这些对象在产品对象的创建过程中不易得到。
四, 示例
public class Product { private String part1; private String part2; public String getPart1() { return part1; } public void setPart1(String part1) { this.part1 = part1; } public String getPart2() { return part2; } public void setPart2(String part2) { this.part2 = part2; } }
public interface Builder { public void buildPart1(); public void buildPart2(); public Product retrieveResult(); }
public class ConcreteBuilder implements Builder { private Product product = new Product(); @Override public void buildPart1() { product.setPart1("create part1"); } @Override public void buildPart2() { product.setPart2("create part2"); } @Override public Product retrieveResult() { return product; } }
public class Director { private Builder builder; /** * @param builder */ public Director(Builder builder){ this.builder = builder; } public void construct(){ builder.buildPart1(); builder.buildPart2(); } }
测试:
public class Client { public static void main(String[]args){ Builder builder = new ConcreteBuilder(); Director director = new Director(builder); director.construct(); Product product = builder.retrieveResult(); System.out.println(product.getPart1()); System.out.println(product.getPart2()); } }
总结: 易用于创建复杂对象, 跟工厂模式的区别是一个注重过程,一个是结果.
在实际过程中,往往会省略导演类. 可参考StringBuilder类
相关推荐
c++实现建造者模式,可直接运行
设计模式之建造者模式代码示例,
这个http://blog.csdn.net/dawanganban/article/details/9990405博客中java设计模式的源代码。下载前请先看《设计模式——建造者模式》一文。
建造者模式: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表现。这就是建造者模式。 建造者模式可以把一个产品的内部表象与产品的生成过程分隔开来,从而可以使一个建造过程就可以生成...
java设计模式【之】建造者模式【源码】【场景:车辆组装】 将复杂的对象构建,与对象的使用进行分离 用户只需要通过简单流程即可创建出对象 方法调用顺序,步骤的不同实现 优点:封装性号,创建和使用分离,扩展性...
设计模式之建造者模式,这个实例能让你尽快理解和掌握建造者模式的运用和原理
C#设计模式之建造者模式应用实例
java 设计模式 建造者模式,希望对大家理解设计模式有帮助
java 建造者模式代码
设计模式例子,观察者模式,建造者模式,一些实践的例子,通俗易懂.
Java 常见创建型模式中的建造者模式及其实际开发中的变种模式
java 建造者模式 源码 ,一个小例子
ios 进阶 建造者模式 学习的好资料 设计模式快速学习
设计模式-建造者模式(讲解及其实现代码)
qt5 编写的建造者模式程序,适用于使用c++学习设计模式的同学
设计模式C++学习之建造者模式(Builder)
建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者模式 由四部分组成: 1.Director(指挥者): 如果创建对象的流程所在 2.Builder(抽象接口): 创建对象要实现的细节,流程依赖着细节 3.ConcreteBuilder(具体构建对象): 创建对象的具体细节实现 4.Product(具体...
13建造者模式.zip