适配器模式
原创
©著作权归作者所有:来自51CTO博客作者我的流浪国的原创作品,请联系作者获取转载授权,否则将追究法律责任
适配就是转换,把不能在一起工作的两样东西通过转换,让他们可以在一起工作
在适配器模式的结构图有以下角色:
(1)、目标角色(Target):定义Client使用的与特定领域相关的接口。
(2)、客户角色(Client):与符合Target接口的对象协同。
(3)、被适配角色(Adaptee):定义一个已经存在并已经使用的接口,这个接口需要适配。
(4)、适配器角色(Adapte) :适配器模式的核心。它将对被适配Adaptee角色已有的接口转换为目标角色Target匹配的接口。对Adaptee的接口与Target接口进行适配.
using System;
namespace 适配器模式
{
class Program
{
static void Main(string[] args)
{
//实例化一个适配器给目标接口
Target target=new Adapter();
//下面的这些就是客户端可以被识别了接口了
target.GetTemperature();
target.GetPressure();
target.GetHumidity();
target.GetUltraviolet();
Console.ReadKey();
}
}
//Target 类(Target 类代表能够被客户端使用的接口)
public abstract class Target
{
//温度
public abstract void GetTemperature();
//气压
public abstract void GetPressure();
//湿度
public abstract void GetHumidity();
//紫外线强度
public abstract void GetUltraviolet();
}
//被适配的类 Adaptee(Adaptee 中的接口由于不能被客户端识别,所以需要被适配)
class Adaptee
{
//在被适配器类中的接口并不是客户端需要的接口
// 比如这里是使用的中文,而我在客户端却必须要使用英文
// 所以在这里我必须使用适配器来适配
public void GetTemperature()
{
Console.WriteLine("您得到了今日的温度");
}
public void GetPressure()
{
Console.WriteLine("您得到了今日的气压");
}
public void GetHumidity()
{
Console.WriteLine("您得到了今日的湿度");
}
public void GetUltraviolet()
{
Console.WriteLine("您得到了今日紫外线强度");
}
}
//适配器(适配器将不能被客户端识别的接口间接转换为可以被识别的接口)
class Adapter:Target
{
//在适配器中必须要维护一个被适配器类的对象
private Adaptee adaptee=new Adaptee();
/// <summary>
/// 通过适配器来适配原来不能被客户端所认识的接口
/// </summary>
public override void GetTemperature()
{
adaptee.GetTemperature();
}
public override void GetPressure()
{
adaptee.GetPressure();
}
public override void GetHumidity()
{
adaptee.GetHumidity();
}
public override void GetUltraviolet()
{
adaptee.GetUltraviolet();
}
}
}