假如有一種拼圖可以拼貼成任何圖形.那麼我們只要生產出這種拼圖的單個組件就可以了.那樣就
會使複雜的圖形變的簡單化.也就是說我們只用設計每一個單個步驟就可以了.這樣做的好處是什
麼呢?很顯然.我們在利用元件生產產品.而不需要直接生產一個巨大的產品.因為可能這些元件本
身就具有通用性.另外的好處是.來自與其本身的複雜性.因為要生產就必須要組裝.而把生產和組
裝分開來考慮.那麼複雜性就會有所降低.也就是所謂的解偶.只做單一考慮那麼這裡就提供了兩個
重要職能.一個是負責生產組件的Builder另外一個是負責組合的Director.這樣就可以把負責的
產品解偶.
那麼,現在我們來類比RPG遊戲中常出現的裝備匹配問題.人物可以配備的裝備為護手,護腳.胸甲
頭盔.那麼我們現在來分開實現,讓後統一整合.
interface IBuilder {
void BuilderHand();
void BuilderFeet();
void BuliderHead();
void BuliderBody();
}
//可供生產的組件
abstract class AbstractPart{
string PartName;
}
class FeetPart:AbstractPart{
FeetPart(){
Console.Writeline("the Part is Feet");
}
}
class BodyPart:AbstractPart{
BodyPart(){
Console.Writeline("the Part is Body");
}
}
class HeadPart:AbstractPart{
HeadPart(){
Console.Writeline("the Part is Head");
}
}
class HandPart:AbstractPart{
HandPart(){
Console.Writeline("the Part is Hand");
}
}
//構造實際構造者
public class ArmBuilder : IBuilder{
AbstractPart Head,Feet,Body,Hand;
public void BuilderHand(){
Hand=new HandPart();
}
public void BuilderFeet(){
Feet=new FeetPart();
}
public void BuliderHead(){
Head=new HeadPart();
}
public void BuliderBody(){
Body=new BodyPart();
}
}
//整合者負責裝配
public class Director {
private IBuilder builder;
public Director( IBuilder builder ) {
this.builder = builder;
}
public void construct() {
builder.BuildFoot();
builder.BuildHead();
builder.BuildBody();
builder.BuildHand();
}
}
public class Client
{
public static int Main(string[] args)
{
IBuilder builder = new ArmBuilder();
Director director = new Director(builder);
director.Construct();
return 0;
}
}