浅谈 java 设计模式--构建模式(Builder pattern)
来源:互联网 发布:c语言多if 多else用法 编辑:程序博客网 时间:2024/04/26 04:35
问题:
当我们要创建的对象很复杂的时候(一般是由很多其它的对象组合而成),最好将对象的创建和表示分离开来,这样做的好处就是通过一步步地进行复杂对象的创建而且每一步构造的过程引入不同的参数,使得相同的创建步骤可以得到不同的对象。
特别是一个对象的多个构造过程的顺序一定时,如构造过程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)
- 设计模式—构建器模式(Builder Pattern)
- 浅谈设计模式:建造者模式(Builder Pattern)
- java设计模式:创建者模式Builder pattern
- Java设计模式 - 建造模式(Builder Pattern)
- 设计模式4 - 构建者模式Builder Design Pattern
- 思维盛宴之设计模式-构建者模式Builder Pattern
- Java设计模式之Builder Pattern
- Java设计模式--构建者模式(Builder)
- 浅谈 java 设计模式--策略模式(Strategy pattern)
- 浅谈 java 设计模式--原始模型模式(Prototype pattern)
- 浅谈 java 设计模式--单例模式(Singleton pattern)
- 浅谈 java 设计模式--抽象工厂模式(AbstractFactory pattern)
- 浅谈 java 设计模式--适配器模式(Adaptor pattern)
- 浅谈 java 设计模式--装饰模式(Decorator pattern)
- 浅谈 java 设计模式--观察者模式(Observer pattern)
- 浅谈 java 设计模式--代理模式(Proxy pattern)
- 浅谈 java 设计模式--命令行模式(Command pattern)
- 蚂蚁爬杆问题
- 技巧 SQL分享
- hdu 1009
- ArcGIS 10.1 for Server 扩展开发(SOE)
- android PowerManager wakelock
- 浅谈 java 设计模式--构建模式(Builder pattern)
- LwIP的内存管理介绍
- 类型检查 与Java 多态相结合及反射机制相结合
- SQL修改指定数据库的表数据类型【如将表中所有varchar类型修改为nvarchar】
- 《失控》
- Web前端开发人员和设计师必读文章推荐(转载)
- Flash读取XML的一些方法
- 时间复杂度与空间复杂度
- myeclipse 6.5 安装 svn 插件