适配器模式
- 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类一起工作。
适配器代码结构
- Target(客户需要的接口,目标可以是具体或者抽象类,也可为接口)
class Target{
public void Request(){
// 普通请求
}
}
- Adaptee(需要适配的类)
class Adaptee{
public void SpecificRequest(){
// 特殊请求
}
}
- Adapter(通过在内部包装一个Adaptee对象,把源接口转换成目标接口)
class Adapter extends Target{
// 建立一个私有的Adaptee对象
private Adaptee adaptee = new Adaptee();
public void Request(){
// 表面上调用Request实际调用SpecificRequest
adaptee.SpecificRequest();
}
}
- 客户端代码
public void main(String[]args){
Target target = new Adapter();
target.Request();
}
何时使用适配器模式
- 在想使用一个已经存在的类,但如果它的接口,也就是它的方法和你的要求不相同时,就应该考虑用适配器模式。
- 两个类所做的事情相同或相似,但具有不同的接口时要使用它。
- 在双方都不太容易修改的时候再使用适配器模式适配。
适配器的实际例子
(姚明配翻译——适配器模式)
球员(前锋/中锋/后卫/翻译者)——翻译者(继承外籍中锋<姚明>)