如果你是一名建筑工人, 现在要建一栋十几层的楼房, 你会按照什么样的一个顺序去建造呢?
正常来说, 肯定是先打地基, 然后在此基础上, 建一层, 建第二层 ...... , 就现在中国的科技来说, 还没有说, 可以先建顶层, 再打地基, 在建倒数第二层, 这样一种随心所欲的建造方法来实现吧.
说白了, 建造者模式适合那种复杂结构, 相互之间有一定影响, 可以合并成一个整体的情景, 其中的新建过程, 可能是有一定顺序的, 就像工人建高楼大厦一样.
一、建造者模式
/// <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)