适配器

适配器用于将给定类的接口(称为 Adaptee )转换为另一个称为 Target 的接口。对目标的操作由一个叫做客户端,并且这些操作都适合通过适配器和传递到适配者。

在 Swift 中,通常可以通过使用协议来形成适配器。在以下示例中,能够与 Target 通信的客户端能够通过使用适配器来执行 Adaptee 类的功能。

// The functionality to which a Client has no direct access
class Adaptee {
    func foo() {
        // ...
    }
}

// Target's functionality, to which a Client does have direct access
protocol TargetFunctionality {
    func fooBar() {}
}

// Adapter used to pass the request on the Target to a request on the Adaptee
extension Adaptee: TargetFunctionality {
    func fooBar() {
        foo()
    }
}

单向适配器的示例流程:Client -> Target -> Adapter -> Adaptee

适配器也可以是双向的,这些被称为双向适配器。当两个不同的客户端需要以不同方式查看对象时,双向适配器可能很有用。