設計模式(4)
介面卡模式:把一個類的介面變換成客戶端所期待的另一種介面(以兩孔、三孔插座為例) 類的介面卡模式: public interface IThreeHole { void Request(); } public abstract class TwoHole { public void SpecificRequest() { Console.WriteLine("我是兩個孔的插頭"); } } /// <summary> /// 介面卡類,介面要放在類的後面 /// 介面卡類提供了三個孔插頭的行為,但其本質是呼叫兩個孔插頭的方法 /// </summary> public class PowerAdapter:TwoHole,IThreeHole { /// <summary> /// 實現三個孔插頭介面方法 /// </summary> public void Request() { // 呼叫兩個孔插頭方法 this.SpecificRequest(); } } 物件的介面卡模式: public class ThreeHole { // 客戶端需要的方法 public virtual void Request() { } } public class TwoHole { public void SpecificRequest() { Console.WriteLine("我是兩個孔的插頭"); } } /// <summary> /// 介面卡類,這裡介面卡類沒有TwoHole類, /// 而是引用了TwoHole物件,所以是物件的介面卡模式的實現 /// </summary> public class PowerAdapter : ThreeHole { public TwoHole twoholeAdaptee = new TwoHole(); public override void Request() { twoholeAdaptee.SpecificRequest(); } }