Java设计模式----建造者模式(Builder)
2015-10-20 11:35
561 查看
1.定义:
将一个复杂对象的创建与它的表示分离,这样可以使得同样的创建方式来构建不同的表示
2. 建造者模式通常包含4中元素:
1. Builder :抽象的接口,称为抽象建造者,用来规范产品各个组成部分的构建。这个接口之复杂对象组成部分的构建,并不涉及具体对象部件的创建
2. ConcreteBuilder : 实现Builder接口,称为具体建造者,具体化产品各个组成部分的构建。建造完成之后,提供产品的实例
3. Director: 调用建造者对象来构建复杂对象,在指导中涉及产品信息,只保证产品按一定的顺序创建
4. Product: 产品类,即要创建的复杂对象类
3. 示例代码:
产品类Product:
4. 使用建造者模式的场合和好处
a、建造者模式的好处:
1.使用建造者模式可以使客户端不必知道产品内部组成的细节。
2.具体的建造者类之间是相互独立的,对系统的扩展非常有利。
3.由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。
b、使用场合:
1.创建一些复杂的对象时,这些对象的内部组成构件间的建造顺序是稳定的,但是对象的内部组成构件面临着复杂的变化。
2.要创建的复杂对象的算法,独立于该对象的组成部分,也独立于组成部分的装配方法时。
将一个复杂对象的创建与它的表示分离,这样可以使得同样的创建方式来构建不同的表示
2. 建造者模式通常包含4中元素:
1. Builder :抽象的接口,称为抽象建造者,用来规范产品各个组成部分的构建。这个接口之复杂对象组成部分的构建,并不涉及具体对象部件的创建
2. ConcreteBuilder : 实现Builder接口,称为具体建造者,具体化产品各个组成部分的构建。建造完成之后,提供产品的实例
3. Director: 调用建造者对象来构建复杂对象,在指导中涉及产品信息,只保证产品按一定的顺序创建
4. Product: 产品类,即要创建的复杂对象类
3. 示例代码:
产品类Product:
/** * 产品类 * @author zqkj001 * */ 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; } }抽象建造者类Builder:
/** * 抽象建造者类 * @author zqkj001 * */ public interface Builder { /** * 产品零件构造方法1 * */ public void buildPart1(); /** * 产品零件构造方法2 * */ public void buildPart2(); /** * 产品返还 * @return */ public Product getResult(); }具体建造者类 ConcreteBuilder:
/** * 具体建造者类 * @author zqkj001 * */ public class ConcreteBuilder implements Builder{ private Product product=new Product(); @Override public void buildPart1() { product.setPart1("build part1..."); } @Override public void buildPart2() { product.setPart2("build part2..."); } @Override public Product getResult() { return product; } }导演者类 Director:
/** * 导演者类 * @author zqkj001 * */ public class Director { /** * 需要使用的当前建造者对象 */ private Builder builder; public Director(Builder builder) { this.builder = builder; } /** * 产品构造方法,负责调用各个零件构造方法 */ public void buildProduct(){ builder.buildPart1(); builder.buildPart2(); } }测试类:
public class BuilderTest { public static void main(String[] args) { Builder builder=new ConcreteBuilder(); Director director=new Director(builder); director.buildProduct(); Product product=builder.getResult(); System.out.println(product.getPart1()); System.out.println(product.getPart2()); } }
4. 使用建造者模式的场合和好处
a、建造者模式的好处:
1.使用建造者模式可以使客户端不必知道产品内部组成的细节。
2.具体的建造者类之间是相互独立的,对系统的扩展非常有利。
3.由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。
b、使用场合:
1.创建一些复杂的对象时,这些对象的内部组成构件间的建造顺序是稳定的,但是对象的内部组成构件面临着复杂的变化。
2.要创建的复杂对象的算法,独立于该对象的组成部分,也独立于组成部分的装配方法时。
相关文章推荐
- Java设计模式----建造者模式(Builder)
- [ios]NSThread传值 NSValue传值
- 【HDOJ】3726 Graph and Queries
- Field 'id' doesn't have a default value
- 通过NameValuePairsValueProvider对象来获取指定前缀的Key
- Java中的String类和StringBuilder类复习
- Easyui Form增加myLoad方法,使其支持二级数据对象,Fix版本
- Linguistic Data Consortium (LDC)
- druid连接池配置
- Leetcode108: Unique Binary Search Trees II
- Version和Build的区别
- NGUI坑之首行缩进
- AndroidUI-TxetView嵌套Html的使用
- UITabbar UINavigationBar
- 【最新API翻译】 Bluetooth--BluetoothAdapter API 翻译
- Qt使用教程之创建Qt Quick项目
- 「8-Queens Problem」皇后问题局部极值启发式搜索方法
- UINavigationItem UINavigationBar 关系分析
- STL学习笔记——序列式容器deque
- 浅谈UIScrollView