适配器模式:
目的:一个类中的特殊方法(specialMethod)在目标类中需要使用但是目标类只提供(Method)方法,这时目标类中不能直接使用
这个特殊方法。这时我们需要构建一个适配器模式该适配器功能,实现目标类也能使用到这一个特殊方法(specialMethod)
模式角色划分:
目标角色:这一个是用户期待的接口。可以使一个具体或抽象的类,也可以是接口
源角色:提供特殊类,这个是需要适配的类。
适配器角色:通过内部包装,把源接口转换成目标接口。
使用情况:
1.类的接口不符合系统需求。
2.需要把一些不相关的类统一起来,以便后面使用。
3.如果一个接口多处使用,增强接口的适应能力。
例如:
目标需要得到的方法是Request()
public interface Target //目标接口
{
void Request(); //目标需要执行的方法
}
这是我们的源类里面提供的方法不一致,提供SpecificRequest()方法
public class Adapee
{
public void SpecificRequest()
{
Console.WriteLine("Call the SpecificRequest()");
}
}
提供一个适配器类, 该类主要目的是对Adapee中的方法进行包装成为Request()方法。
这里面主要是继承了源类和目标接口。然后对源类中特殊方法进行包装成为符合用户所期待的方法。
public class Adapter:Adapee,Target
{
public void Request()
{
this.SpecificRequest();
}
}
构建完成了
下一步:
主程序如何调用的问题。使用目标接口实现一个适配器类,然后使用这一个对象调用里面提供的方法。
class Program
{
static void Main(string[] args)
{
Target i = new Adapter(); //使用接口实例化适配器类
i.Request(); //调用适配器提供的符合用户期待的方法。
Console.ReadLine();
}
}