橋接模式
阿新 • • 發佈:2017-06-25
安卓 andro over style rri 手機 bstr spa 個數
橋接模式應用:當應該m和n變化就需要建立m*n個類。
利用橋接我們封裝變化,就只需要建立M+N個類
主方法
namespace 橋接模式 { /// <summary> /// 橋接模式: /// 當我們需要小米ios、小米安卓、蘋果ios、蘋果安卓手機的時候,對應要件4個類。 /// 這個時候我們分析手機和操作系統是變化的,需要建m*n個類(m:手機品牌個數 n:系統個數) /// /// 這個時候我們可以封裝變化 /// 在手機中定義一個系統字段,外部來賦值,這樣就只用建m+n個類 /// </summary> class Program {static void Main(string[] args) { //蘋果的ios系統手機 BasePhone iphone = new Iphone(); iphone.system = new IOS().GetSystem(); iphone.Call(); iphone.Message(); //小米的ios系統手機 BasePhone xiaoMi = new XiaoMi(); xiaoMi.system= new IOS().GetSystem(); xiaoMi.Call(); xiaoMi.Message(); //小米的安卓系統手機 BasePhone xiaoMi = new XiaoMi(); xiaoMi.system = new Android().GetSystem(); xiaoMi.Call(); xiaoMi.Message(); Console.ReadKey(); } } }
新建手機類
namespace 橋接模式 { public abstract class BasePhone { public string system = null; public abstract void Call(); public abstract void Message(); } } public class Iphone:BasePhone { public override void Call() { Console.WriteLine("我這個是{0}手機,用的是{1}操作系統來{2}", this.GetType().Name, base.system, new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name); } public override void Message() { Console.WriteLine("我這個是{0}手機,用的是{1}操作系統來{2}", this.GetType().Name, base.system, new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name); } } public class XiaoMi:BasePhone { public override void Call() { Console.WriteLine("我這個是{0}手機,用的是{1}操作系統來{2}", this.GetType().Name, base.system, new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name); } public override void Message() { Console.WriteLine("我這個是{0}手機,用的是{1}操作系統來{2}", this.GetType().Name, base.system, new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name); } }
新建系統類
namespace 橋接模式 { public interface ISystem { string GetSystem(); } } public class IOS:ISystem { public string GetSystem() { return this.GetType().Name; } } public class Android:ISystem { public string GetSystem() { return this.GetType().Name; } }
橋接模式