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