C#设计模式--设配器模式
设计模式:
适配器模式(Adapter Pattern)
简单介绍:
适配器模式(Adapter Pattern)将一个类的接口转换成客户希望的另外一个接口,比如说用户希望将普通家用的220V电压转换成5V给手机充电,那么就需要一个转换设备,手机充电头和充电线,就是这个道理!似乎笔记本电脑的电源线就叫电源适配器,这里的适配器大概就是这个思想
原型模式参与者:
目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。
需要适配的类(Adaptee):需要适配的类或适配者类。
适配器(Adapter):通过包装一个需要适配的对象,将Target这个用户期待的接口转换成用户需要的Adaptee
适配器模式类图:
适配器模式c#代码示例:
Target 目标类
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 }
Adaptee类 受改造的类
1 /// <summary> 2 /// 受改造的类 3 /// </summary> 4 public class Adaptee 5 { 6 public void AdapteePrint() 7 { 8 Console.WriteLine("My name is Adaptee."); 9 } 10 }
Adapter 适配器类
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 }
运行结果:
适配器模式C#源码工程文件下载
适配器模式实际生活举例
举例说明:
假设将普通用户的标准电压220V转换成手机充电的标准电压5V(这里仅仅是举例子,如果有不恰当,还望多多包涵)
目标接口(Target):普通用户标准电压类--->UserStandardVoltage.cs
需要适配的类(Adaptee):手机用户充电电压类-->MobileChargingVoltage.cs
适配器(Adapter):适配器类-->PowerAdapter.cs
类图参考
适配器模式成C#代码生活例子举例说明:
serStandardVoltage类 普通用户家用标准电压220V
1 /// <summary> 2 /// 用户标准电压 3 /// </summary> 4 public class UserStandardVoltage 5 { 6 public virtual void printVoltage() 7 { 8 Console.WriteLine("我是用户标准电压220V!"); 9 } 10 }
MobileChargingVoltage普通用户手机充电标准电压5V
1 public class MobileChargingVoltage 2 { 3 public void printVoltage() 4 { 5 Console.WriteLine("我是手机标准充电电压5V"); 6 } 7 }
PowerAdapter电源适配器类 将用户标准电压220V转换为手机充电标准电压5V
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 }
用户测试类:用户使用使用居民标准电压220V的接口,利用适配器既可以得到5V电压标准的接口
1 class Client 2 { 3 static void Main(string[] args) 4 { 5 UserStandardVoltage userStandardVoltage = new PowerAdapter(); 6 userStandardVoltage.printVoltage(); 7 Console.Read(); 8 } 9 }
运行结果
适配器模式C#源码工程文件下载手机电源适配器实例