设计模式之生成器模式
2014-01-10 22:57
253 查看
生成器模式
内容:将一个复杂对象的构建与其表示分离,使得同样的构建过程可以产生出不同的表示。结构:
1、产品:具体生成器要构造的复杂对象。
2、抽象生成器:定义了生成复杂对象各个组成部分的抽象方法,并定义了返回产品实例的方法。
3、具体生成器:抽象生成器的子类,实现了抽象生成器中的抽象方法。
4、指挥者:其是一个包含生成器引用的类,通过不同的生成器来为用户构造出不同的产品对象。
UML类图:
优点:
将对象的构造过程封装在具体的生成器中,用户使用不同的生成器就可以得到不同的产品对象,生成器模式可以精细的控制产品对象的构造过程,用户无须了解产品对象的具体组件,可以随时增加具体生成器,但指挥者无须做任何变动。
适用情境:
系统要求对象的构造过程必须独立于创建该对象的类时;无法通过构造方法来创建内部复杂的对象。
使用实例:
//定义包含了两个组件的产品 public class Product { String stringComponent; Integer integerComponent; public String getStringComponent() { return stringComponent; } public Integer getIntegerComponent() { return integerComponent; } }
//定义抽象生成器 public interface Builder { public abstract void buildStringComponent(); public abstract void buildIntegerComponent(); public abstract Product getProduct(); }
//具体生成器A public class ABuilder implements Builder { private Product product; public ABuilder(){ this.product = new Product(); } @Override public void buildStringComponent() { // TODO Auto-generated method stub this.product.stringComponent = new String("AAA"); } @Override public void buildIntegerComponent() { // TODO Auto-generated method stub this.product.integerComponent = new Integer(0+'A'); } @Override public Product getProduct() { // TODO Auto-generated method stub return this.product; } }
//具体生成器B public class BBuilder implements Builder { private Product product; public BBuilder(){ this.product = new Product(); } @Override public void buildStringComponent() { // TODO Auto-generated method stub this.product.stringComponent = new String("BBB"); } @Override public void buildIntegerComponent() { // TODO Auto-generated method stub this.product.integerComponent = new Integer(0+'B'); } @Override public Product getProduct() { // TODO Auto-generated method stub return this.product; } }
//指挥者 public class Director { private Builder builder; public Director(Builder builder){ this.builder = builder; } public Product constructProduct() { this.builder.buildStringComponent(); this.builder.buildIntegerComponent(); return this.builder.getProduct(); } }
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Builder builder = new ABuilder(); Director director = new Director(builder); Product product = director.constructProduct(); System.out.println(product.getStringComponent()+":"+product.getIntegerComponent()); builder = new BBuilder(); director = new Director(builder); product = director.constructProduct(); System.out.println(product.getStringComponent()+":"+product.getIntegerComponent()); } }生成器模式的精髓是将一个含有多个组件的对象的创建过程分成若干步骤,并将这些步骤封装在一个称为生成器的接口中。
相关文章推荐
- 设计模式----Builder(生成器)
- 设计模式PHP5实现之----生成器(Builder)
- JAVA设计模式之生成器模式
- 设计模式之-生成器模式
- java设计模式 之生成器模式 Builder
- IOS设计模式学习(6)生成器
- 设计模式----Builder(生成器)
- 设计模式之BUILDER(生成器)—对象创建型模式
- IOS设计模式学习 生成器
- 设计模式——生成器
- Android设计模式系列(12)--SDK源码之生成器模式(建造者模式)
- 设计模式学习总结2 - 创建型2 - Builder生成器模式
- 读书笔记_java设计模式深入研究 第四章 生成器模式 (建造者模式) Builder
- Java设计模式_创建模式_生成器模式
- 设计模式 — 生成器模式 (Builder)
- 设计模式:生成器模式(学习笔记)
- Build(生成器)设计模式之析
- 设计模式学习总结:生成器模式(Builder)
- 设计模式学习(五) ------ 生成器模式
- 【重读设计模式】生成器模式