读书人

Builder(修筑模式)

发布时间: 2012-06-28 15:20:03 作者: rapoo

Builder(建造模式)
定义:Builder模式是一步一步创建一个复杂的对象,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 是为了将构建复杂对象的过程和它的部件解耦.
通常为四个角色:
i)抽象建造者(Builder)角色:给出一个抽象接口,以规范产品对象的各个组成成分的构造;
ii)具体建造者(ConcretBuilder)角色:它在应用程序的调用下创建产品的实例。完成任务为;
a) 实现抽象建造者Builder接口,给出一步步完成创建产品实例的操作;
b) 在创建完成后,提供产品的实例。
iii) 导演者—irector角色):调用具体建造者角色以创建产品对象;
iv)产品(Product)角色:建造中的复杂对象。一般情况下,一个系统不止一个产品类。
假如我们要组装一台电脑(Computer类),里面有三个配件(Keyboard类,MainFrameBox类,Monitor类)

/** * Computer类 里面有com.jeedroid.part包里的三个属性 */package com.jeedroid.product;import com.jeedroid.part.*;public class Computer{private Keyboard keyboard;private MainFrameBox mainFrameBox;private Monitor monitor;public Keyboard getKeyboard(){return keyboard;}public void setKeyboard(Keyboard keyboard){this.keyboard = keyboard;}public MainFrameBox getMainFrameBox(){return mainFrameBox;}public void setMainFrameBox(MainFrameBox mainFrameBox){this.mainFrameBox = mainFrameBox;}public Monitor getMonitor(){return monitor;}public void setMonitor(Monitor monitor){this.monitor = monitor;}public Computer(Keyboard keyboard, MainFrameBox mainFrameBox, Monitor monitor){super();this.keyboard = keyboard;this.mainFrameBox = mainFrameBox;this.monitor = monitor;}}/** * 这个类调用CreatorComputer类来完成组装工作 */package com.jeedroid.designpattern;import com.jeedroid.product.Computer;public class Director{private Builder builder;public Director(Builder builder){this.builder=builder;}public void  construct(){builder.buildKeyboard();builder.buildMainFrameBox();builder.buildMonitor();}}/** * 这个类负责具体的组装工作 */package com.jeedroid.designpattern;import com.jeedroid.part.Keyboard;import com.jeedroid.part.MainFrameBox;import com.jeedroid.part.Monitor;import com.jeedroid.product.Computer;public class CreatorComputer implements Builder{private Keyboard keyboard;private MainFrameBox mainFrameBox;private Monitor monitor;private Computer computer;@Overridepublic Keyboard buildKeyboard(){keyboard=new Keyboard("keyboard");return keyboard;}@Overridepublic MainFrameBox buildMainFrameBox(){mainFrameBox=new MainFrameBox("MainFrameBox");return mainFrameBox;}@Overridepublic Monitor buildMonitor(){monitor=new Monitor("monitor");return null;}@Overridepublic Computer getComputer(){computer=new Computer(keyboard,mainFrameBox,monitor);return computer;}}

测试代码

读书人网 >软件架构设计

热点推荐