文章出處
文章列表
/// <summary> /// 抽象概念中的遙控器,扮演抽象化角色 /// </summary> public class RemoteControl { // 字段 private TV implementor; // 屬性 public TV Implementor { get { return implementor; } set { implementor = value; } } /// <summary> /// 開電視機,這里抽象類中不再提供實現了,而是調用實現類中的實現 /// </summary> public virtual void On() { implementor.On(); } /// <summary> /// 關電視機 /// </summary> public virtual void Off() { implementor.Off(); } /// <summary> /// 換頻道 /// </summary> public virtual void SetChannel() { implementor.tuneChannel(); } } /// <summary> /// 具體遙控器 /// </summary> public class ConcreteRemote : RemoteControl { public override void SetChannel() { Console.WriteLine("---------------------"); base.SetChannel(); Console.WriteLine("---------------------"); } }
/// <summary> /// 電視機,提供抽象方法 /// </summary> public abstract class TV { public abstract void On(); public abstract void Off(); public abstract void tuneChannel(); } /// <summary> /// 長虹牌電視機,重寫基類的抽象方法 /// 提供具體的實現 /// </summary> public class ChangHong : TV { public override void On() { Console.WriteLine("長虹牌電視機已經打開了"); } public override void Off() { Console.WriteLine("長虹牌電視機已經關掉了"); } public override void tuneChannel() { Console.WriteLine("長虹牌電視機換頻道"); } } /// <summary> /// 三星牌電視機,重寫基類的抽象方法 /// </summary> public class Samsung : TV { public override void On() { Console.WriteLine("三星牌電視機已經打開了"); } public override void Off() { Console.WriteLine("三星牌電視機已經關掉了"); } public override void tuneChannel() { Console.WriteLine("三星牌電視機換頻道"); } }
采用橋接模式的客戶端調用代碼:
/// <summary> /// 以電視機遙控器的例子來演示橋接模式 /// </summary> class Client { static void Main(string[] args) { // 創建一個遙控器 RemoteControl remoteControl = new ConcreteRemote(); // 長虹電視機 remoteControl.Implementor = new ChangHong(); remoteControl.On(); remoteControl.SetChannel(); remoteControl.Off(); Console.WriteLine(); // 三星牌電視機 remoteControl.Implementor = new Samsung(); remoteControl.On(); remoteControl.SetChannel(); remoteControl.Off(); Console.Read(); } }
使用場景:
三層架構
文章列表
全站熱搜