GOF23的一些总结(三)
来源:互联网 发布:指南针炒股软件诈骗 编辑:程序博客网 时间:2024/05/22 06:24
建造者模式:通过建造者的接口,提供创建元件对象的方法,然后根据组装者提供一个组装的方法将原件进行组装,并在组装方法中提供一个需要对象的属性和获取属性的方法;
以下是各个之间类图的关系
需求对象蓝图
package com.dasenlin.cn;public class AirShip { private OrbitalModel orbital; private Engine engine; private EscapeTower escape; public void launch(){ System.out.println("调用发动机"); } public AirShip() { super(); // TODO Auto-generated constructor stub } public AirShip(OrbitalModel orbital, Engine engine, EscapeTower escape) { super(); this.orbital = orbital; this.engine = engine; this.escape = escape; } public OrbitalModel getOrbital() { return orbital; } public void setOrbital(OrbitalModel orbital) { this.orbital = orbital; } public Engine getEngine() { return engine; } public void setEngine(Engine engine) { this.engine = engine; } public EscapeTower getEscape() { return escape; } public void setEscape(EscapeTower escape) { this.escape = escape; }}class OrbitalModel{ private String name; public OrbitalModel(String name) { super(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; }}class Engine{ private String name; public Engine(String name) { super(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; }}class EscapeTower{ private String name; public EscapeTower(String name) { super(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
元件对象的构建蓝图方法
package com.dasenlin.cn;public interface AirShipBuilder { OrbitalModel buildOrbitalModel(); Engine buildEngine(); EscapeTower buildEscapeTower();}
需要对象的构建蓝图方法
package com.dasenlin.cn;public interface AirShipDirector { AirShip createAirShip();}
实现蓝图方法构建元件对象
package com.dasenlin.cn;public class DasenlinAirShipBuilder implements AirShipBuilder{ @Override public OrbitalModel buildOrbitalModel() { System.out.println("构建大森林哥的轨道仓"); return new OrbitalModel("大森林哥的轨道仓"); } @Override public Engine buildEngine() { System.out.println("构建大森林哥的引擎"); return new Engine("大森林的引擎"); } @Override public EscapeTower buildEscapeTower() { System.out.println("构建大森林哥哥的逃逸塔"); return new EscapeTower("大森林的逃逸塔"); }}
实现需求对象蓝图方法
package com.dasenlin.cn;public class DasenlinAirShipDirector implements AirShipDirector{ private AirShipBuilder builder; public DasenlinAirShipDirector(AirShipBuilder builder) { super(); this.builder = builder; } @Override public AirShip createAirShip() { Engine en=builder.buildEngine(); EscapeTower et=builder.buildEscapeTower(); OrbitalModel om=builder.buildOrbitalModel(); AirShip air =new AirShip(); air.setEngine(en); air.setEscape(et); air.setOrbital(om); return air; }}
客户端构建
package com.dasenlin.cn;public class Test { /** * @param args */ public static void main(String[] args) { AirShipDirector director = new DasenlinAirShipDirector(new DasenlinAirShipBuilder()); AirShip ship = director.createAirShip(); System.out.println(ship.getEngine().getName()+":"+ship.getEscape().getName()+":"+ship.getOrbital().getName()); ship.launch(); }}
0 0
- GOF23的一些总结(三)
- GOF23的一些总结(一)
- GOF23的一些总结(二)
- GOF23的一些总结(四)
- GOF23的一些总结(五)
- GOF23的一些总结(六)
- GOF23的一些总结(七)
- GOF23的一些总结(八)
- GOF23的一些总结(九)
- GOF23的一些总结(十)
- GOF23的一些总结(十一)
- GOF23的一些总结(十二)
- GOF23的一些总结(十三)
- GOF23的一些总结(十四)
- GOF23的一些总结(十五)
- GOF23的一些总结(十六)
- GOF23的一些总结(十八)
- GOF23的一些总结(十九)
- 创建对象及原型模式
- 判断单链表是否有环
- Java微信公众平台开发之生成带参二维码
- 7. JPA - Hibernate【从零开始学Spring Boot】
- 复杂表单转换JS对象 form2js插件介绍
- GOF23的一些总结(三)
- Eclipse设置或更换jdk版本
- 求N以内的所有完数
- 更新libva及V4l2 Buffer Sharing
- 协议栈的编码、解码
- 【bzoj2243】【树链剖分】【线段树】SDOI2011染色
- 数据结构的排序汇总
- 8. 使用JPA保存数据【从零开始学Spring Boot】
- iOS 10 相册相机闪退bug