应用场景
/**
* 系统的数据和行为都正确,但接口不符合,我们应该考虑使用适配器模式
* 主要应用于希望复用一些现存的类,但接口和复用环境不匹配
* 举个例子,翻译者 就是适配器模式
* 目的是使控制范围之外的一个原有对象和某个接口匹配.
*/
结构图
范例
/**
* 需要被调用的是Target的Request()
*/
public class Target {
public void Request(){
Log.d("meee",getClass()+":\n"+"Target.普通请求");
}
}
/**
* 需要适配的类
*/
public class Adaptee {
public void request_X(){
Log.d("meee",getClass()+":\n"+"Adaptee的特殊请求");
}
}
public class Adapter extends Target{
Adaptee mAdaptee;
public Adapter() {
mAdaptee=new Adaptee();
}
@Override
public void Request() {
mAdaptee.request_X();
}
}
private void AdapterPattern(){
Target target=new Adapter();
target.Request();
}
范例2
public abstract class Player {
public abstract void attack();
public abstract void defense();
}
public class YaoMing{
public void 进攻(){
Log.d("meee",getClass()+":\n"+"姚明 进攻");
}
public void 防守(){
Log.d("meee",getClass()+":\n"+"姚明 防守");
}
}
public class Translator extends Player{
YaoMing yaoming=new YaoMing();
@Override
public void attack() {
yaoming.进攻();
}
@Override
public void defense() {
yaoming.防守();
}
}
public void AdapterPatternDemo(){
Player player=new Translator();
player.attack();
player.defense();
}