适配器(Adaptor)其英文解释是:适配器; 改编者; 改写者适应者; 适应物; 在这里我们学习的是适配器模式,其定义是将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作,适配器模式的用意是要改变源的接口,以便于目标接口相容。
“最少知识”原则:只和你的密友谈话。
从图中我们可以看出来Adapter和Adaptee中的类有一个相同的但是按照接口实现为了使客户端能够用到Adaptee类中的方法所以就定义了一个Adapter
public interface Target {
public void DrinkWater();
public void Playfootball(); //这是源类Adapteee没有的方法
}
Adaptee类中只有一个方法
public class Adaptee{
public void DrinkWater(){}
}
定义一个Adapter类
public class Adapter {
private Adaptee adaptee;
public Adapter(Adaptee adaptee){
this.adaptee = adaptee;
}
/**
* 源类Adaptee有方法DrinkWater
* 因此适配器类直接委托即可
*/
public void DrinkWater(){
this.adaptee.DrinkWater();
}
/**
* 源类Adaptee没有方法Playfootball
* 因此由适配器类需要补充此方法
*/
public void Playfootball(){
//写相关的代码
}
}
其实适配器就是这样让原本没有在一起的类,但是关系有很紧密的类使用同一个接口实现的工具,其实他就相当于实现一个功能的催化剂一样。