看完适配器模式,我想起一个成语“亡羊补牢”
为什么呢?我们通常设计一个类,入参和返回值都是为了符合当前的需要,比如某个请求相册数据的接口我们直接返回了List<ImgVO>,但是有一天前端也想用这个接口,但是和他们定义的通用返回结构是Result这样子的结构
Result.class |
---|
Integer code; |
String msg; |
Object data; |
而我们又不想去更改现有的代码去兼容他们,那么我们可以给他们用适配器模式再去设计一个符合他们要求的一个类(适配器),通过继承当前类(被适配类)并重写这个方法更改返回值,或者将当前类传入适配器类中作为成员变量,实际的运算逻辑仍然调用(被适配类),而只用重新封装返回参数的代码。
适配器模式分为两种:类适配器模式、对象适配器模式
类适配器模式通过继承的方式,而对象适配器模式则通过委托的方式实现(委托给原对象,即将原对象作为一个成员变量在适配器类中使用)
下面是适类配器模式的类图:
对象适配器的类图:
适配器模式中的角色:
1. 对象(Target):对调用者提供调用的方法
2. 被适配者(Adaptee):实际逻辑的执行者,但是输入或者返回的格式不能满足调用者的需要
2. 适配器类(Adapter):按照调用者要求的输入或者返回的格式来适配,实际的逻辑仍是被适配者执行。
适配器模式,属于结构型的设计模式