面临问题:
总是存在一些类,我们希望复用它,但是它却没有我们期望的接口。或者这个期望的接口,通常是不能修改的。我们应该怎样做才能复用它?
举个例子,我现在想给手机充电,但是只有三孔的插头,我想用它,但是还不能用,我该怎么做才能让它变成两孔的让我能够充电呢?
解决方案:
Adapter模式使原来由于接口不兼容而不能一起工作的类可以一起工作。
也就是说,我找一个适配器,这样就能使用哪个三孔插头了。
类适配器: 继承关系
对象适配器: 关联关系
对象适配器可以把多个不同的源适配到同一个目标。
即:同一个适配器可以把源类和它的子类都适配到目标接口。
相关的模式
Bridge:结构类似,但Bridge的目的是将接口部分和实现部分分离,从而使得它们可以较为容易也相对独立的加以改变。而adapter则意味着改变一个已有对象的接口
Decorator:增强了其它对象的功能而同时又不改变它的接口,透明性比adapter好。不改变接口,但加入责任。
Proxy:在不改变它的接口的条件下,为另一个对象定义了一个代理。