Skip to content

Head First 设计模式 07-适配器模式

🏷️ 《Head First 设计模式》

适配器模式 将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。

类图如下:

Client:客户只看到目标接口。
Target:目标接口。
Adapter:适配器只看到目标接口。适配器与被适配者组合。
Adaptee:所有的请求都委托给被适配者。

适配器模式充满着良好的 OO 设计原则:使用对象组合,以修改的接口包装被适配者;这种做法还有额外的优点,那就是,被适配者的任何子类,都可以搭配着适配器使用。

适配器模式分为 “对象”适配器“类”适配器。上面类图是 “对象”适配器 ,而 “类”适配器 则需要编程语言支持 多重继承 才能够实现。

Adapter 同时继承 TargetAdaptee 就是 “类”适配器

示例代码

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();