浅谈 java 设计模式--构建模式(Builder pattern)
2012-08-15 15:33
597 查看
问题:
当我们要创建的对象很复杂的时候(一般是由很多其它的对象组合而成),最好将对象的创建和表示分离开来,这样做的好处就是通过一步步地进行复杂对象的创建而且每一步构造的过程引入不同的参数,使得相同的创建步骤可以得到不同的对象。
特别是一个对象的多个构造过程的顺序一定时,如构造过程A必须在构造过程B之前进行,建造模式是个不错的选择。
类图:
源码实现:
总结:
[GOF95]中,Builder模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
Builder模式和AbstractFactory模式在功能上很相似,因为都是用来创建大的复杂的对象,它们的区别是:Builder模式强调的是一步步创建对象,并通过相同的创建过程可以获得不同的结果对象,一般来说Builder模式中对象不是直接返回的。而在AbstractFactory模式中对象是直接返回的,AbstractFactory模式强调的是为创建多个相互依赖的对象提供一个同一的接口。
当我们要创建的对象很复杂的时候(一般是由很多其它的对象组合而成),最好将对象的创建和表示分离开来,这样做的好处就是通过一步步地进行复杂对象的创建而且每一步构造的过程引入不同的参数,使得相同的创建步骤可以得到不同的对象。
特别是一个对象的多个构造过程的顺序一定时,如构造过程A必须在构造过程B之前进行,建造模式是个不错的选择。
类图:
源码实现:
public class Director { private Builder builder; public Product construct(){ builder = new ConcreteBuilder(); builder.buildPartA("ActualParaA"); builder.buildPartB("ActualParaB"); builder.buildPartC("ActualParaC"); return builder.getProduct(); } } public abstract class Builder{ public abstract void buildPartA(String strParaA); public abstract void buildPartB(String strParaB); public abstract void buildPartC(String strParaC); public abstract Product getProduct(); } public class ConcreteBuilder extends Builder{ private Product product = new Product(); public void buildPartA(String strParaA){ product.setParaA(strParaA); System.out.println("product.setParaA(strParaA)..."); } public void buildPartB(String strParaB){ product.setParaB(strParaB); System.out.println("product.setParaB(strParaB)..."); } public void buildPartC(String strParaC){ product.setParaC(strParaC); System.out.println("product.setParaC(strParaC)..."); } public Product getProduct(){ System.out.println("return product"); return product; } } public class Product{ private String paraA; private String paraB; private String paraC; public String getParaA() { return this.paraA; } public void setParaA(String strParaA){ this.paraA = strParaA; } public String getParaB(){ return this.paraB; } public void setParaB(String strParaB){ this.paraB = strParaB; } public String getParaC(){ return this.paraC; } public void setParaC(String strParaC){ this.paraC = strParaC; } } public class Client{ public static void main(String[] args){ Director director = new Director(); Product product = director.construct(); System.out.println("product.paraA=" + product.paraA); System.out.println("product.paraB=" + product.paraB); System.out.println("product.paraC=" + product.paraC); } }
总结:
[GOF95]中,Builder模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
Builder模式和AbstractFactory模式在功能上很相似,因为都是用来创建大的复杂的对象,它们的区别是:Builder模式强调的是一步步创建对象,并通过相同的创建过程可以获得不同的结果对象,一般来说Builder模式中对象不是直接返回的。而在AbstractFactory模式中对象是直接返回的,AbstractFactory模式强调的是为创建多个相互依赖的对象提供一个同一的接口。
相关文章推荐
- Java设计模式——建造模式(Builder Pattern)
- Java设计模式--建造者模式【Builder Pattern】
- Java设计模式——建造者模式(Builder Pattern)
- 浅谈 java 设计模式--命令行模式(Command pattern)
- 浅谈JAVA设计模式之——建造者模式(Builder)
- 【java类的设计模式—02】建造者模式(Builder pattern)
- 浅谈 java 设计模式--抽象工厂模式(AbstractFactory pattern)
- 浅谈 java 设计模式--简单工厂模式(Simple Factory pattern)
- 设计模式—构建器模式(Builder Pattern)
- Java设计模式之Builder Pattern
- 浅谈 java 设计模式--观察者模式(Observer pattern)
- java设计模式---生成器模式(Builder pattern)
- java设计模式学习4--Builder Pattern[原创]
- JAVA设计模式之 建造者模式【Builder Pattern】
- Java设计模式——创建型模式——建造者模式(Builder Pattern)
- 浅谈 java 设计模式--适配器模式(Adaptor pattern)
- 浅谈设计模式--建造器模式(Builder Pattern)
- Java设计模式三:建造者模式(Builder Pattern)
- 浅谈 java 设计模式--装饰模式(Decorator pattern)
- java设计模式——建造者模式(Builder Pattern)