建造者模式

將對象子組件的創建與裝配分離

public class AirShip {//構建的目標對象
	Engine engine;
	EscapeTower escapeTower;
	
	public void launch()
	{
		System.out.println(engine.type);
		System.out.println(escapeTower.name);
	}
}
class Engine{//子組件
	public String type;
	public Engine(String type)
	{
		this.type = type;
	}
}
class EscapeTower{//子組件
	public String name;
	
	public EscapeTower(String type) {
		name = type;
	}
}
public interface AirShipBuilder {//建造者抽象類
	Engine createEngine();
	EscapeTower createEscapeTower();
}
class MyAirShipBuilder implements AirShipBuilder{//建造者實現類
	@Override
	public Engine createEngine() {
		// TODO Auto-generated method stub
		return new Engine(Thread.currentThread().getStackTrace()[1].getMethodName());
	}
	@Override
	public EscapeTower createEscapeTower() {
		// TODO Auto-generated method stub
		return new EscapeTower(Thread.currentThread().getStackTrace()[1].getMethodName());
	}
	
}
public class AirDirector {//組裝類
	AirShipBuilder builder;
	
	public void SetAirShipBuilder( AirShipBuilder builder)
	{
		this.builder = builder;
	}
	
	AirShip DirectorAirShip()
	{
		AirShip airShip = new AirShip();
		airShip.engine = builder.createEngine();
		airShip.escapeTower = builder.createEscapeTower();
		
		return airShip;
	}
}
public class Client {//使用類
	public static void main(String[] args)
	{
		AirDirector airDir = new AirDirector();
		airDir.SetAirShipBuilder(new MyAirShipBuilder());
		airDir.DirectorAirShip().launch();
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章