Adapter模式

<设计模式>一书中的描述

"将一个类的接口转换成客户希望的另一个接口,Adapter模式使原本由于接口不兼容而不能一起工作的类可以一起工作"

简单的说,就是利用现有的接口去包装一个第三方的接口, 使其能象现有接口一样被程序调用,而不考虑实际使用类的差异

举例:

当前系统有一个绘图接口 IDraw , 其中定义了display()方法,用来显示一个
现在同事A,给我一套新的绘图类,但是这个类却使用了show()方法来显示一个图形
我不能修改这个新接口,因为他被编译了,如果直接使用此接口,我不得不修改主程序以适应这个接口,这是一个繁重的工作
但是,使用Adapter模式,可以根据IDraw接口来创建一个"适配器"
class MyDraw implements IDraw{
 OtherDraw otherDraw = new OtherDraw();
 public void display(){
   otherDraw.show();
 }
}
现在我们可以调用MyDraw的display()方法来显示图形了,主程序不会意识到下端子系统的变化

 

Adapter模式与Facade模式很相象
他们都封装了原有的接口

他们之间的区别在于
Facade模式不按照某个接口设计    Adapter模式必须按照某个类设计
Facade一般不需要多态行为           Adapter模式大多可能是为了现有的多态行为而使用的
Facade是为了简化原有的复杂接口    Adapter必须遵循一个已有的接口,不能简化任何东西,即使可能存在更简单的接口

参考书籍:设计模式解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值