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