【十三】Java设计模式GOF23之建造者模式

版权声明:转载注明出处 https://blog.csdn.net/jy02268879/article/details/81638066

目录

AirShip.java

public class AirShip {
	private OrbittalModule orbitalModule;//轨道舱
	private Engine engine;//发动机
	private EscapeTower escapeTower; //逃逸塔
	
	public void launch(){
		System.out.println("����");
	}
	
	public OrbittalModule getOrbitalModule() {
		return orbitalModule;
	}
	public void setOrbitalModule(OrbittalModule 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 OrbittalModule{
	private String name;

	public OrbittalModule(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;
	}
	
}

AirShipBuilder.java

public interface AirShipBuilder {
	OrbittalModule builderOrbitalModule();
	Engine builderEngine();
	EscapeTower builderEscapeTower();
}

AirShipDirector.java

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

SxtAirShipBuilder.java

public class SxtAirShipBuilder implements AirShipBuilder{

	@Override
	public OrbittalModule builderOrbitalModule() {
		System.out.println("构建轨道舱");
		//这里可以跟工厂模式搭配使用
		return new OrbittalModule("sxt�ƹ����");
	}

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

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

}

SxtAirShipDirector.java

public class SxtAirShipDirector implements AirShipDirector{

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

	@Override
	public AirShip directAirShip() {
		Engine e = builder.builderEngine();
		OrbittalModule om = builder.builderOrbitalModule();
		EscapeTower et = builder.builderEscapeTower();
		
		//装配成AirShip对象
		AirShip ship = new AirShip();
		ship.setEngine(e);
		ship.setEscapeTower(et);
		ship.setOrbitalModule(om);
		return ship;
	}

}

Client.java

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();
	}
}

猜你喜欢

转载自blog.csdn.net/jy02268879/article/details/81638066