動機:一個複雜物件由多個子物件構成,該對象建立的演算法相對不變,構成的子物件劇烈變化。如何應對子物件的劇烈變化,隔離比較穩定的建立演算法和易變的子物件,使客戶程式不隨著子物件的改變而改變。
情境:ThinkPad系列產品和一般筆記本一樣,擁有比較固定的組成部分:主板、CPU、硬碟、顯示器、鍵盤……。假設所有ThinkPad的組裝過程完全相同,不同績效參數的部分組合在一起形成不同型號的ThinkPad,比如T43和T60。如何在組裝過程不變的情況下,做出適合型號的所需組件(以CPU和主板為例),就能快速組裝成我們所要型號的ThinkPad?
結構
代碼實現
/**//*
* 子物件CPU
*/
namespace DesignPattern.Builder
{
public abstract class CPU
{
}
public class T43CPU : CPU
{
}
public class T60CPU : CPU
{
}
}
/**//*
* 子物件主板
*/
namespace DesignPattern.Builder
{
public abstract class Mainboard
{
}
public class T43Mainboard : Mainboard
{
}
public class T60Mainboard : Mainboard
{
}
}
/**//*
*複雜物件ThinkPad
*/
namespace DesignPattern.Builder
{
public abstract class ThinkPad
{
}
public class T43ThinkPad : ThinkPad
{
}
public class T60ThinkPad : ThinkPad
{
}
}
/**//*
* ThinkPad產生器
*/
namespace DesignPattern.Builder
{
public abstract class ThinkPadBuilder
{
public abstract CPU BuildCPU();
public abstract Mainboard BuildMainboard();
public abstract ThinkPad GetThinkPad();
}
public class T43Builder : ThinkPadBuilder
{
public override CPU BuildCPU()
<img id=Codehighlighter1_629_672_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_629_672_Closed_Text.style.display='none'; Codehigh