zoukankan      html  css  js  c++  java
  • 建造者模式 -- 大话设计模式

    在今天,读书有时是件“麻烦”事。它需要你付出时间,付出精力,还要付出一份心境。--仅以《大话设计模式》来祭奠那逝去的……

    建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的建造过程可以创建不同的表示

    1.建造者模式应用

      一家服装厂,经理老张,员工两名(一个师傅老王,一个徒弟小海),客户跟老张联系,要做两件衣服,老张指派老王和小海各做一件

      定义建造者抽象类和具体建造者,他们是具体干活的(对象的构建)

        /// <summary>
        /// 员工抽象类(建造者抽象类)
        /// </summary>
        public abstract class Staff
        {
            protected string _name;
    
            public Staff(string name)
            {
                this._name = name;
            }
    
            /// <summary>
            /// 具体业务
            /// </summary>
            public abstract void DoSomething();
        }
    
        /// <summary>
        /// 一般员工(具体建造者)
        /// </summary>
        public class GeneralStaff : Staff
        {
            public GeneralStaff(string name) : base(name) { }
    
            public override void DoSomething()
            {
                Console.WriteLine("{0}【一般员工】做的衣服,做工粗糙", this._name);
            }
        }
    
        /// <summary>
        /// 资深员工(具体建造者)
        /// </summary>
        public class SeniorStaff : Staff
        {
            public SeniorStaff(string name) : base(name) { }
    
            public override void DoSomething()
            {
                Console.WriteLine("{0}【资深员工】做的衣服,做工精细", this._name);
            }
        }
    

       定义指挥者,负责与外部对接的(表示的分离)

        /// <summary>
        /// 指挥者
        /// </summary>
        public class Director
        {
            protected string _name;
    
            public Director(string name)
            {
                this._name = name;
            }
    
            /// <summary>
            /// 指派员工干活
            /// </summary>
            public void Assign(Staff staff)
            {
                staff.DoSomething();
            }
        }
    

       开启场景模拟

            static void Main(string[] args)
            {
                //一家服装厂,经理老张,员工两名(一个师傅老王,一个徒弟小海)
                Director laozhang = new Director("老张");
    
                SeniorStaff laowang = new SeniorStaff("老王");
                GeneralStaff xiaohai = new GeneralStaff("小海");
    
                //客户跟老张联系,要做两件衣服,老张指派老王和小海各做一件
                laozhang.Assign(laowang);
                laozhang.Assign(xiaohai);
            }
    
  • 相关阅读:
    iOS开发中应用程序图标和启动图片的尺寸
    Localization native development region 设置属性(转)
    iOS 开发之 ZBarSDK 二维码扫描自定义二维码扫描页面(二)
    iOS 开发之 ZBarSDK 二维码扫描 静态库不支持64bit完美解决(一)
    iOS 播放Gif动画
    使用GCD异步下载图片 可以中途停止下载
    GCD线程队列 MJ(转)
    iOS 开发之头部滚动展示视图
    iOS 版本更新 (转)
    iOS App打包发布 (转)
  • 原文地址:https://www.cnblogs.com/amywechat/p/4924784.html
Copyright © 2011-2022 走看看