Head First 设计模式 07-适配器模式
适配器模式 将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
类图如下:
Client:客户只看到目标接口。
Target:目标接口。
Adapter:适配器只看到目标接口。适配器与被适配者组合。
Adaptee:所有的请求都委托给被适配者。
适配器模式充满着良好的 OO 设计原则:使用对象组合,以修改的接口包装被适配者;这种做法还有额外的优点,那就是,被适配者的任何子类,都可以搭配着适配器使用。
适配器模式分为 “对象”适配器 和 “类”适配器。上面类图是 “对象”适配器 ,而 “类”适配器 则需要编程语言支持 多重继承 才能够实现。
将 Adapter 同时继承 Target 和 Adaptee 就是 “类”适配器 。
示例代码
Target
csharp
interface Target
{
void Request();
}
Adapter
csharp
class Adapter : Target
{
private Adaptee _adaptee;
public Adapter(Adaptee adaptee)
{
_adaptee = adaptee;
}
public void Request()
{
_adaptee.SpecificRequest();
}
}
Adaptee
csharp
class Adaptee
{
public void SpecificRequest()
{
Console.WriteLine("");
}
}
Client
csharp
var adaptee = new Adaptee();
Target target = new Adapter(adaptee);
target.Request();