• 设计模式


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

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

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

    一、建造者模式

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

  • 相关阅读:
    生产环境常见的几种JVM异常
    JVM垃圾回收时如何确定垃圾?是否知道什么是GCRoots?
    你平时工作用过的JVM常用基本配置参数有哪些?
    java X参数
    JUC之CAS
    JUC之List集合
    JUC之lock
    JUC之volatile
    BZOJ2132: 圈地计划
    BZOJ3991: [SDOI2015]寻宝游戏
  • 原文地址:https://www.cnblogs.com/elvinle/p/6164329.html
Copyright © 2020-2023  润新知