.net設計模式 (橋接模式)學習筆記
阿新 • • 發佈:2018-12-20
運用設計模式只是為了解決一類問題的,當解決掉當前一類問題,通常會在解決這個問題時候 帶來其他問題 合理應用揚長避短
結構性設計模式:
.net設計模式 (橋接模式)學習筆記
概要: 變化封裝,組合複用 。優點 易於擴充。缺點 是 生產環節 變複雜了(多個組合)。使用者需要了解 跟多的細節。
現在 有個業務需求,我們為 三臺時候 分別 刷機三種系統, 3*3 就是9中對應的機器和系統,要是用簡單 的 整合 會有9中型別檔案,在 繼續新新增 功能 那將是 乘的 關係。 要是用橋接的方式 就是 加 的關係
/// <summary> /// 作業系統 /// </summary> public interface ISyetem { string Version(); string OS(); } class AndroidSystem : ISyetem { public string OS() { return "Android"; } public string Version() { return "6.0"; } } class IOSSystem : ISyetem { public string OS() { return "IOS"; } public string Version() { return "9.3"; } } class WinSystemcs : ISyetem { public string OS() { return "Winsow"; } public string Version() { return "10.0"; } } /// <summary> /// 手機的基類 /// </summary> abstract class BasePhone { public ISyetem syetem { get; set; } public abstract void Call(); public abstract void SendMessage(); } class GalaxyBridge : BasePhone { public override void Call() { Console.WriteLine(this.syetem.OS()); } public override void SendMessage() { Console.WriteLine(this.syetem.Version()); } } . class IPhoneBridge : BasePhone { public override void Call() { Console.WriteLine(this.syetem.OS()); } public override void SendMessage() { Console.WriteLine(this.syetem.Version()); } } class LumiaBridge : BasePhone { public override void Call() { Console.WriteLine(this.syetem.OS()); } public override void SendMessage() { Console.WriteLine(this.syetem.Version()); } } class Program { static void Main(string[] args) { ISyetem ssytemAndroid = new AndroidSystem(); ISyetem ssytemIOS = new IOSSystem(); ISyetem ssytemWin = new WinSystemcs(); BasePhone phoneIOS = new IPhoneBridge(); BasePhone phoneAndroid = new GalaxyBridge(); BasePhone phoneWin = new LumiaBridge(); phoneIOS.syetem = ssytemAndroid; phoneIOS.Call(); phoneIOS.SendMessage(); phoneIOS.syetem = ssytemIOS; phoneIOS.Call(); phoneIOS.SendMessage(); } }