文章出處

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

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

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

一、建造者模式

/// <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)


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()