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);
            }
    
  • 相关阅读:
    汉语-词语:什么
    汉语-词语:甚么
    汉语-汉字:心
    汉语-词汇:头脑
    汉语-词语:冰冷
    汉语-词汇:冷静
    两个int类型的数据相加,有可能会出现超出int的表示范围。
    两个int类型的数据相加,有可能会出现超出int的表示范围。
    成员变量与局部变量的区别_
    函数额基本概述
  • 原文地址:https://www.cnblogs.com/amywechat/p/4924784.html
Copyright © 2011-2022 走看看