Java设计模式之构建者模式

来源:互联网 发布:cool edit for mac版 编辑:程序博客网 时间:2024/05/29 01:55
对于这种模式的话,我们先来简单的介绍一下。构建者模式也就是说,将很多的小的部件组建成一个产品。可以分为俩个部分,一个是Builder,这是如何构造出小的部件的类。还有一个是Director,这是如何将小的部件组建成产品的类。
现在我们来举一个小的例子:
我们就以这张图片的为基础,来看一个例子:
//这是宇宙飞船的一个类public class AirShip {private OrbitalMoudle  oritalMoudle;private Engine engine;private EscapeTower escapeTower;public OrbitalMoudle getOritalMoudle() {return oritalMoudle;}public void setOritalMoudle(OrbitalMoudle oritalMoudle) {this.oritalMoudle = oritalMoudle;}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;}public AirShip(OrbitalMoudle oritalMoudle, Engine engine, EscapeTower escapeTower) {super();this.oritalMoudle = oritalMoudle;this.engine = engine;this.escapeTower = escapeTower;}public AirShip() {super();// TODO Auto-generated constructor stub}}//这是与宇宙飞船相关的三个小的部件class OrbitalMoudle{private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public OrbitalMoudle(String name) {super();this.name = name;}public OrbitalMoudle() {super();// TODO Auto-generated constructor stub}}class Engine{private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public Engine(String name) {super();this.name = name;}public Engine() {super();// TODO Auto-generated constructor stub}}class EscapeTower{private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public EscapeTower(String name) {super();this.name = name;}public EscapeTower() {super();// TODO Auto-generated constructor stub}}
//这是创建宇宙飞船的三个小部件public interface AirShipBuilder {OrbitalMoudle OrbitalMoudleBuilder();Engine EngineBuilder();EscapeTower EscapeTowerBuilder();}
//这是将三小的部件组建成宇宙飞船public interface AirShipDirector {AirShip directAirShip();}
//这是一个实现类public class LgAirShipBuilder implements AirShipBuilder {@Overridepublic OrbitalMoudle OrbitalMoudleBuilder() {// TODO Auto-generated method stubSystem.out.println("构造李果牌轨道舱");return new OrbitalMoudle("李果牌轨道舱");}@Overridepublic Engine EngineBuilder() {// TODO Auto-generated method stubSystem.out.println("构造李果牌发动机");return new Engine("李果牌发动机");}@Overridepublic EscapeTower EscapeTowerBuilder() {// TODO Auto-generated method stubSystem.out.println("构造李果牌逃逸塔");return new EscapeTower("李果牌逃逸塔");}}
//在这里我们创造了飞船以后,我们就可以定义操作飞船的方法。//这也是一个实现类。public class LgAirShipDirector implements AirShipDirector{private AirShipBuilder builder;public LgAirShipDirector(AirShipBuilder builder) {super();this.builder = builder;}public LgAirShipDirector() {super();// TODO Auto-generated constructor stub}@Overridepublic AirShip directAirShip() {// TODO Auto-generated method stubEngine engine=builder.EngineBuilder();OrbitalMoudle orbitalMoudle=builder.OrbitalMoudleBuilder();EscapeTower escapeTower=builder.EscapeTowerBuilder();AirShip airShip=new AirShip();airShip.setEngine(engine);airShip.setEscapeTower(escapeTower);airShip.setOritalMoudle(orbitalMoudle);return airShip;}public void launch(){System.out.println("发射");}}
//这是一个调用的客户端public class Client {public static void main(String[] args){LgAirShipDirector director=new LgAirShipDirector(new LgAirShipBuilder());AirShip ship=director.directAirShip();  String name= ship.getEngine().getName();    System.out.println(name);    director.launch();    }}
最后的输出的结果为:
构造李果牌发动机构造李果牌轨道舱构造李果牌逃逸塔李果牌发动机发射
现在我们来看一下它的类图的关系:
这就是我们的一个完整的构建者模式的例子。也就是将零散的小的部件组建成一个产品。这个模式常常也可以与工厂方法模式来结合使用。
0 0
原创粉丝点击