您的位置:首页 > 产品设计 > UI/UE

【创建型模式】建造者模式(Builder)之23种java设计模式

2016-04-22 09:57 811 查看




AirShip类

public class AirShip {
private OrbitalModule orbitalModule;// 轨道舱
private Engine engine;// 发动机
private EscapeTower escapeTower;// 逃逸塔

public void launch() {
System.out.println("方法");
}

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 String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public OrbitalModule(String name) {
this.name = name;
}
}

class Engine {
private String name;

public Engine(String name) {
this.name = name;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

class EscapeTower {
private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public EscapeTower(String name) {
this.name = name;
}
AirShipBuilder接口和实现类

public interface AirShipBuilder {
Engine builderEngine();
OrbitalModule builderOrbitalModule();
EscapeTower builderEscapeTower();
}
public class SxtAirShipBuilder implements AirShipBuilder {

@Override
public Engine builderEngine() {
System.out.println("构建发动机!");
return new Engine("发动机");
}

@Override
public EscapeTower builderEscapeTower() {
System.out.println("构建逃逸塔!");
return new EscapeTower("逃逸塔");
}

@Override
public OrbitalModule builderOrbitalModule() {
System.out.println("构建轨道舱!");
return new OrbitalModule("轨道舱");
}

}
AirShipDirector组装接口和实现类

public interface AirShipDirector {
//组装
AirShip directAirShip();
}

public class SxtAirShipDirector implements AirShipDirector {

private AirShipBuilder builder;

public SxtAirShipDirector(AirShipBuilder builder) {
this.builder = builder;
}

@Override
public AirShip directAirShip() {
Engine engine = builder.builderEngine();
EscapeTower escapeTower = builder.builderEscapeTower();
OrbitalModule orbitalModule = builder.builderOrbitalModule();

AirShip airShip = new AirShip();
airShip.setEngine(engine);
airShip.setEscapeTower(escapeTower);
airShip.setOrbitalModule(orbitalModule);
return airShip;
}

}
测试类Client

public class Client {

public static void main(String[] args) {
AirShipDirector director = new SxtAirShipDirector(new SxtAirShipBuilder());
AirShip ship = director.directAirShip();
System.out.println(ship.getEngine().getName());
ship.launch();
}
}


测试结果

构建发动机!

构建逃逸塔!

构建轨道舱!

发动机

方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: