如果你是一名建築工人, 現在要建一棟十幾層的樓房, 你會按照什麼樣的一個順序去建造呢? 正常來說, 肯定是先打地基, 然後在此基礎上, 建一層, 建第二層 ...... , 就現在中國的科技來說, 還沒有說, 可以先建頂層, 再打地基, 在建倒數第二層, 這樣一種隨心所欲的建造方法來實現吧. 說白了 ...
如果你是一名建築工人, 現在要建一棟十幾層的樓房, 你會按照什麼樣的一個順序去建造呢?
正常來說, 肯定是先打地基, 然後在此基礎上, 建一層, 建第二層 ...... , 就現在中國的科技來說, 還沒有說, 可以先建頂層, 再打地基, 在建倒數第二層, 這樣一種隨心所欲的建造方法來實現吧.
說白了, 建造者模式適合那種複雜結構, 相互之間有一定影響, 可以合併成一個整體的情景, 其中的新建過程, 可能是有一定順序的, 就像工人建高樓大廈一樣.
一、建造者模式
/// <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也放在一起. 自己指導, 自己動手.
這不是個好例子, 不過應該能明白整個建造過程, 以及建造模式的思想了.
參考:
設計模式