设计模式 - 建造者模式

如果你是一名建筑工人, 现在要建一栋十几层的楼房, 你会按照什么样的一个顺序去建造呢?

正常来说, 肯定是先打地基, 然后在此基础上, 建一层, 建第二层 ...... , 就现在中国的科技来说, 还没有说, 可以先建顶层, 再打地基, 在建倒数第二层, 这样一种随心所欲的建造方法来实现吧.

说白了, 建造者模式适合那种复杂结构, 相互之间有一定影响, 可以合并成一个整体的情景, 其中的新建过程, 可能是有一定顺序的, 就像工人建高楼大厦一样.

一、建造者模式

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

posted @ 2016-12-12 14:18  Sniper_ZL  阅读(299)  评论(0编辑  收藏  举报