适配器模式的意图在于,使用不同接口的类所提供的服务为客户端提供它所期望的接口。通俗的讲,可以重用现有的类,以满足客户端要求。
适配器分为两大类: 类适配器(接口适配)、对象适配器
类适配器(接口适配)
需要服务方提供以接口服务的时候,考虑到使用接口适配
UML图
需要提供服务接口
interface Client {
void needMethod();
}
已经存在的服务类
class ExistsClass {
void existsMethod(){
// 具体实现
}
}
适配出新的类
class NewClass extends ExistsClass implements Client {
@Override
void needMethod() {
existsMethod();
}
}
对象适配
当需要适配一组并非定义在接口中的方法时,那么我们需要使用对象适配,这样我们使用的是委派而非继承。
UML图
需要适配的类(想要增加功能的类)
class RequireClass{
void requireMethod();
}
已经存在的服务类
class ExistsClass {
void existsMethod(){
// 具体实现
}
}
适配出新的类
class NewClass extends ExistsClass {
private ExistsClass existsClass ;
void requireMethod() {
existsClass.existsMethod();
}
}
注意
:类的适配是继承现有的类,实现目标接口;对象适配是继承目标类,引用现有的类。