文章出處
文章列表
在今天,讀書有時是件“麻煩”事。它需要你付出時間,付出精力,還要付出一份心境。--僅以《大話設計模式》來祭奠那逝去的……
橋接模式:將抽象部分與它的實現部分分離,使它們都可以獨立的變化。一個類存在兩個獨立變化的維度,而且兩個維度都需要進行擴展的時候,可以使用橋接模式
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(); }
文章列表
全站熱搜