出门在外的时候,我们希望能够方便的为自己的电子产品充电,但是不同地方有自己的充电插座规格。我们当然不可能为了不同的充电插座标准都购置相应的充电设备,更多的时候,我们会购置一个多合一的转换器。
通过转换器,我们就可以在无需改动已有结构的前提下使用原本不适配的设备。转换器帮助我们完成了已有结构(已有充电设备)对新接口(插座)的适配。转换器也被叫做适配器(
Adaptor
)。
适配器模式帮助我们将一个类的接口转换成所期望的另外一个类,让原本不兼容的类可以合作。
@startuml Class Adaptor class Client{ } class Target{ requests() } class Adaptee{ specficRequest() } class Adapter extends Adaptee,Target { requests() } Client -r-> Target @enduml
对象适配器通过持有被适配类的对象,同时实现
Target
接口,将对应方法委托给被适配类执行。对象适配器通过组合的方式实现,是动态的,能够在运行时修改被适配类及其子类。但是不方便重定义适配的行为。
@startuml Object Adaptor class Client{ } interface Target{ requests() } class Adaptee{ specficRequest() } class Adapter implements Target { Adaptee adaptee requests() } Client -r-> Target Adapter::adaptee -r-> Adaptee @enduml