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