文章出處

在今天,讀書有時是件“麻煩”事。它需要你付出時間,付出精力,還要付出一份心境。--僅以《大話設計模式》來祭奠那逝去的……

建造者模式:將一個復雜對象的構建與它的表示分離,使得同樣的建造過程可以創建不同的表示

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);
        }

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()