适配器模式(Adapter Pattern)将一个类的接口转换成客户希望的另外一个接口,比如说用户希望将普通家用的220V电压转换成5V给手机充电,那么就需要一个转换设备,手机充电头和充电线,就是这个道理!似乎笔记本电脑的电源线就叫电源适配器,这里的适配器大概就是这个思想
原型模式参与者:
目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。
需要适配的类(Adaptee):需要适配的类或适配者类。
适配器(Adapter):通过包装一个需要适配的对象,将Target这个用户期待的接口转换成用户需要的Adaptee
1 /// <summary> 2 /// 目标类 3 /// </summary> 4 public class Target 5 { 6 public virtual void TargetPrint() 7 { 8 Console.WriteLine("My name is Target!"); 9 } 10 }
1 /// <summary> 2 /// 受改造的类 3 /// </summary> 4 public class Adaptee 5 { 6 public void AdapteePrint() 7 { 8 Console.WriteLine("My name is Adaptee."); 9 } 10 }
1 /// <summary> 2 /// 适配器 3 /// </summary> 4 public class Adapter : Target 5 { 6 private Adaptee adaptee = new Adaptee(); 7 public override void TargetPrint() 8 { 9 adaptee.AdapteePrint(); 10 } 11 }
1 class Client 2 { 3 static void Main(string[] args) 4 { 5 Target target = new Adapter(); 6 target.TargetPrint(); 7 Console.Read(); 8 } 9 }
假设将普通用户的标准电压220V转换成手机充电的标准电压5V(这里仅仅是举例子,如果有不恰当,还望多多包涵)
目标接口(Target):普通用户标准电压类--->UserStandardVoltage.cs
需要适配的类(Adaptee):手机用户充电电压类-->MobileChargingVoltage.cs
适配器(Adapter):适配器类-->PowerAdapter.cs
1 /// <summary> 2 /// 用户标准电压 3 /// </summary> 4 public class UserStandardVoltage 5 { 6 public virtual void printVoltage() 7 { 8 Console.WriteLine("我是用户标准电压220V!"); 9 } 10 }
1 public class MobileChargingVoltage 2 { 3 public void printVoltage() 4 { 5 Console.WriteLine("我是手机标准充电电压5V"); 6 } 7 }
1 /// <summary> 2 /// 电源适配器类 3 /// </summary> 4 public class PowerAdapter:UserStandardVoltage 5 { 6 private MobileChargingVoltage mobileChargingVoltage = new MobileChargingVoltage(); 7 public override void printVoltage() 8 { 9 mobileChargingVoltage.printVoltage(); 10 } 11 }
1 class Client 2 { 3 static void Main(string[] args) 4 { 5 UserStandardVoltage userStandardVoltage = new PowerAdapter(); 6 userStandardVoltage.printVoltage(); 7 Console.Read(); 8 } 9 }
原文:http://www.cnblogs.com/JiYF/p/6438533.html