文章出處

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

橋接模式:將抽象部分與它的實現部分分離,使它們都可以獨立的變化。一個類存在兩個獨立變化的維度,而且兩個維度都需要進行擴展的時候,可以使用橋接模式

1.不同品牌手機要安裝不同的手機軟件(注意:高層要引用底層,三層架構中就運用了橋接模式,BLL層中通過橋接模式與DAL解耦,其實現方式就是BLL層中添加了DAL層的引用,這樣數據庫底層的改變就不會影響客戶端的實現了)

  定義手機軟件(底層)抽象類和具體軟件類

    /// <summary>
    /// 手機軟件
    /// </summary>
    public abstract class HandsetSoft
    {
        public abstract void Run();
    }

    /// <summary>
    /// 手機游戲
    /// </summary>
    public class HandsetGame : HandsetSoft
    {
        public override void Run()
        {
            Console.WriteLine("運行手機游戲");
        }
    }

    /// <summary>
    /// 手機通訊錄
    /// </summary>
    public class HandsetAddressList : HandsetSoft
    {
        public override void Run()
        {
            Console.WriteLine("運行手機通訊錄");
        }
    }

   定義手機品牌(高層)抽象類和具體品牌類

    /// <summary>
    /// 手機品牌
    /// </summary>
    public abstract class HandsetBrand
    {
        protected HandsetSoft soft;

        /// <summary>
        /// 品牌需要關注軟件,所以可在機子中安裝軟件
        /// </summary>
        public void SetHandsetSoft(HandsetSoft soft)
        {
            this.soft = soft;
        }

        public abstract void Run();
    }

    /// <summary>
    /// 手機品牌M
    /// </summary>
    public class HandsetBrandM : HandsetBrand
    {
        public override void Run()
        {
            this.soft.Run();
        }
    }

    /// <summary>
    /// 手機品牌N
    /// </summary>
    public class HandsetBrandN : HandsetBrand
    {
        public override void Run()
        {
            this.soft.Run();
        }
    }

   開啟場景模擬

        static void Main(string[] args)
        {
            HandsetBrand ab = new HandsetBrandM();

            ab.SetHandsetSoft(new HandsetGame());
            ab.Run();

            ab.SetHandsetSoft(new HandsetAddressList());
            ab.Run();
        }

 


文章列表




Avast logo

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


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

    IT工程師數位筆記本

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