天天看點

設計模式 - 建造者模式

如果你是一名建築勞工, 現在要建一棟十幾層的樓房, 你會按照什麼樣的一個順序去建造呢?

正常來說, 肯定是先打地基, 然後在此基礎上, 建一層, 建第二層 ...... , 就現在中國的科技來說, 還沒有說, 可以先建頂層, 再打地基, 在建倒數第二層, 這樣一種随心所欲的建造方法來實作吧.

說白了, 建造者模式适合那種複雜結構, 互相之間有一定影響, 可以合并成一個整體的情景, 其中的建立過程, 可能是有一定順序的, 就像勞工建高樓大廈一樣.

一、建造者模式

/// <summary>
/// 機器人建造類
/// 分的比較粗狂, 别在意, 不是重點
/// </summary>
abstract public class RobotBuilder
{
    abstract public void BuildHead();

    abstract public void BuildBody();

    abstract public void BuildHand();

    abstract public void BuildFoot();
}      

建造抽象類, 是一種規範, 規定整個建造過程中, 需要建造哪些部分.

public class RobotA : RobotBuilder
{

    public override void BuildHead()
    {
        Console.WriteLine("RobotA's head finished !");
    }

    public override void BuildBody()
    {
        Console.WriteLine("RobotA's body finished !");
    }

    public override void BuildHand()
    {
        Console.WriteLine("RobotA's hand finished !");
    }

    public override void BuildFoot()
    {
        Console.WriteLine("RobotA's foot finished !");
    }
}      

具體實作, 上司既然發話了, 下面的人, 就開始落實具體細節了.

public class Director
{
    public static void Build(RobotBuilder builder)
    {
        builder.BuildFoot();
        Console.WriteLine("拼裝雙腿雙腳");

        builder.BuildBody();
        Console.WriteLine("拼裝身體, 立在地上");

        builder.BuildHand();
        Console.WriteLine("拼裝雙手");

        builder.BuildHead();
        Console.WriteLine("安上頭顱, 啟動機器人! 建造拼裝完成");
    }
}      

有時候, 為了簡化, 會将Builder,Director省去, 具體需要部分以及最後的Director的Build也放在一起. 自己指導, 自己動手. 

設計模式 - 建造者模式

這不是個好例子, 不過應該能明白整個建造過程, 以及建造模式的思想了.

參考:

設計模式

C#設計模式(8)

繼續閱讀