通过使用真实示例和
Swift
中的适配器设计模式,将不兼容的对象转换为目标接口或类。
在设计模式中,适配器模式(英语:adapter pattern)有时候也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类能在一起工作,做法是将类自己的接口包裹在一个已存在的类中。
结构
有两种类型的适配器模式:
对象适配器模式
在这种适配器模式中,适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。
- 类适配器模式
这种适配器模式下,适配器继承自已实现的类(一般多重继承)。
适配器是一种结构设计模式,允许具有不兼容接口的对象一起工作。 换句话说,它转换对象的接口以使其适应不同的对象。
因此,适配器可以将一件事转换为另一件事,有时也称为包装器,因为它可以包装对象并在其周围提供一个新接口。 就像特定接口或旧类的软件加密狗一样。
适配器设计模式的实现
在 Swift
中创建适配器实际上是一件非常容易的事情。 你只需要创建一个新对象,将旧对象“装箱”到其中,并在新类或结构上实现所需的接口即可。 换句话说,包装器对象将是我们的适配器,通过包装另一个适配器对象来实现目标接口。
Adaptee
我们正在适应特定目标的对象(例如,老式的USB-A端口)。
Adapter
一个包装原始对象并产生由某些目标接口指定的新要求的对象(这完成了实际工作,也就是上面的小软件狗)。
Target
这是我们要与(我们的 USB-C
插座)适配器一起使用的对象。
如何在Swift中使用适配器模式?
如果要在代码中集成第三方库,则可以使用适配器,但是其接口与你的要求不匹配。 例如,你可以围绕整个 SDK
或后端 API
端点创建包装器,以创建一个公分母。 👽
在我的示例中,我将使用适配器类包装 EKEvent
对象,以实现全新的协议。 📆
1 | import Foundation |
另一个用例是当你必须使用几个现有的最终类或结构,但它们缺少某些功能,并且你想在它们之上构建一个新的目标接口时。 有时,实现包装程序来处理这种混乱情况是一个不错的选择。 🤷♂️
这就是适配器设计模式的全部内容。 通常,用 Swift
或任何其他编程语言实现它确实很容易,但是它非常有用,有时是不可避免的。 孩子们,请记住:不要在加密狗上太用力!😉