为何需要适配器模式?
适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的 电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法使用。这时候一个三相到两相的转换器(适配器)。
在适配器中,有三个类,
● 目标(Target)角色:这就是所期待得到的接口。注意:由于这里讨论的是类适配器模式,因此目标不可以是类。
● 源(Adapee)角色:现在需要适配的接口。
● 适配器(Adaper)角色:适配器类是本模式的核心。适配器把源接口转换成目标接口。显然,这一角色不可以是接口,而必须是具体类。
Adapee类可以看做是基类,现在需求要实现一些新的功能的时候,我们不去修改Adapee这个类,而是使用interface也就是Target这个目标接口,让一个新的类Adapter去实现这个借口,即完成了新的功能的添加,但如果还想实现基类的功能的时候,target中还需要有基类的方法,这样,新的类有可以复写的target中的方法,又有基类中方法的实现,这样就做到了在旧功能存在的情况下实现新功能。
/*这个时目标接口,原来类的方法,和将要实现的方法都在其中*/
public
interface
Target {
/**
* 这是源类Adaptee也有的方法
*/
public
void
sampleOperation1();
/**
* 这是源类Adapteee没有的方法
*/
public
void
sampleOperation2();
}
/*此类是原类,包含已经实现的方法*/
public
class
Adaptee {
public
void
sampleOperation1(){}
}
/*此类既实现了原类的方法,又添加了新的方法*/
public
class
Adapter
extends
Adaptee
implements
Target {
/**
* 由于源类Adaptee没有方法sampleOperation2()
* 因此适配器补充上这个方法
*/
@Override
public
void
sampleOperation2() {
//写相关的代码
}
}