宇宙飞船类及子组件类:
package builder_mode; /** * 本类整合了飞船子组件 */ /** * 宇宙飞船 */ public class Airship { /** * 轨道舱 */ private OrbitalModule orbitalModule; /** * 发动机 */ private Engine engine; /** * 逃逸舱 */ private EscapeTower escapeTower; /** * 发射 */ public void launch(){ engine.ignition(); orbitalModule.openRest(); } /** * 故障 */ public void fault(){ escapeTower.popup(); } public OrbitalModule getOrbitalModule() { return orbitalModule; } public void setOrbitalModule(OrbitalModule orbitalModule) { this.orbitalModule = orbitalModule; } public Engine getEngine() { return engine; } public void setEngine(Engine engine) { this.engine = engine; } public EscapeTower getEscapeTower() { return escapeTower; } public void setEscapeTower(EscapeTower escapeTower) { this.escapeTower = escapeTower; } } /** * 轨道舱 */ class OrbitalModule { private String name; public OrbitalModule(String name) { this.name = name; } /** * 开发休息平台 */ public void openRest(){ System.out.println("开发休息平台!"); } public String getName() { return name; } public void setName(String name) { this.name = name; } } /** * 发动机 */ class Engine { private String name; public Engine(String name) { this.name = name; } /** * 点火 */ public void ignition(){ System.out.println("点火!"); } public String getName() { return name; } public void setName(String name) { this.name = name; } } /** * 逃逸舱 */ class EscapeTower { private String name; public EscapeTower(String name) { this.name = name; } /** * 弹出 */ public void popup(){ System.out.println("弹出!"); } public String getName() { return name; } public void setName(String name) { this.name = name; } }
构建者类型:
package builder_mode; /** * 构建者类型 */ public interface AirshipBuilder { /** * 构建发动机 */ Engine builderEngine(); /** * 构建轨道舱 */ OrbitalModule builderOrbitalModule(); /** * 构建逃逸舱 */ EscapeTower builderEscapeTower(); }
具体构建者:
package builder_mode; /** * Xxx构建者, 具体构建者, 可以配合工厂模式 */ public class XxxAirshipBuilder implements AirshipBuilder { /** * 构建Xxx牌发动机 */ @Override public Engine builderEngine() { System.out.println("构建Xxx牌发动机!"); return new Engine("Xxx牌发动机"); } /** * 构建Xxx牌轨道舱 */ @Override public OrbitalModule builderOrbitalModule() { System.out.println("构建Xxx牌轨道舱!"); return new OrbitalModule("Xxx牌轨道舱"); } /** * 构建Xxx牌逃逸舱 */ @Override public EscapeTower builderEscapeTower() { System.out.println("构建Xxx牌逃逸舱!"); return new EscapeTower("Xxx牌逃逸舱"); } }
组装者类型:
package builder_mode; /** * 组装者类型 */ public interface AirshipDirector { /** * 组装宇宙飞船 */ Airship directAirShip(); }
具体组装者:
package builder_mode; /** * Xxx组装者, 具体组装者 */ public class XxxAirshipDirector implements AirshipDirector { /** * 持有具体构建者 */ private AirshipBuilder builder; /** * 构造器(传入具体构建者) * @param builder */ public XxxAirshipDirector(AirshipBuilder builder) { this.builder = builder; } /** * 组装宇宙飞船 * 建造者模式的核心方法, 客户不必关心具体的对象创建和对象组织 */ @Override public Airship directAirShip() { //创建子组件 Engine e = builder.builderEngine(); OrbitalModule o = builder.builderOrbitalModule(); EscapeTower et = builder.builderEscapeTower(); //装配成飞船对象 Airship ship = new Airship(); ship.setEngine(e); ship.setEscapeTower(et); ship.setOrbitalModule(o); return ship; } }
类图:

测试类:
package builder_mode; public class Client { public static void main(String[] args) { //创建XXX组装者(传入XXX构建者) AirshipDirector director = new XxxAirshipDirector(new XxxAirshipBuilder()); //组装一个飞船对象出来 Airship ship = director.directAirShip(); //测试功能 ship.launch(); ship.fault(); } }
执行结果:
构建Xxx牌发动机! 构建Xxx牌轨道舱! 构建Xxx牌逃逸舱! 点火! 开发休息平台! 弹出!
谢谢声明出处!
转自: http://www.cnblogs.com/gscq073240/articles/7126374.html

浙公网安备 33010602011771号