woieha320r的博客

适配器

用于后期维护时解决兼容问题:将服务类的接口转为调用者期望的接口

类适配器

· 继承自服务类并实现调用者期望的接口,但适配器同时拥有了期望方法和原方法,违背迪米特原则

classDiagram class SourceA { +sourceServiceA() void } class SourceB { +sourceServiceB() void } class Target { <<interface>> +targetService() void } class Adapter { +sourceServiceA() void +sourceServiceB() void +targetService() void } Adapter ..|> Target : 实现 Adapter --|> SourceA : 继承 Adapter --|> SourceB : 继承 class Main Main ..> Adapter : 实例化

对象适配器

· 组合服务类并实现调用者期望的接口

classDiagram class SourceA { +sourceServiceA() void } class SourceB { +sourceServiceB() void } class Target { <<interface>> +targetService() void } class Adapter { +targetService() void } Adapter ..|> Target : 实现 Adapter *-- SourceA : 构造器初始化成员 Adapter *-- SourceB : 构造器初始化成员 class Main Main ..> SourceA : 实例化 Main ..> SourceB : 实例化 Main ..> Adapter : 实例化

接口适配器

· 上述例子是一个期望接口,若干服务类。这里要说的是让一个适配器实现多个需求类似的期望接口,以避免新增多个适配器

classDiagram class SourceA { +sourceServiceA() void } class SourceB { +sourceServiceB() void } class TargetA { <<interface>> +targetServiceA() void } TargetA --|> Target : 继承 class TargetB { <<interface>> +targetServiceB() void } TargetB --|> Target : 继承 class Target { <<interface>> +targetServiceA() void +targetServiceB() void } class Adapter { +targetServiceA() void +targetServiceB() void } Adapter ..|> Target : 实现 Adapter *-- SourceA : 构造器初始化成员 Adapter *-- SourceB : 构造器初始化成员 class Main Main ..> SourceA : 实例化 Main ..> SourceB : 实例化 Main ..> Adapter : 实例化