适配器模式
»大话设计模式读书笔记为什么需要适配器模式
适配器模式是用来将接口转换成我们需要的接口类型。从而让原本不兼容的接口可以合作。
例如:原先有一个食堂接口,Canteen,现在我们程序中只对餐厅接口开放,即一切的代码都只针对餐厅接口,Restaurant,但是以前的食堂接口里的方法其实对我们是有用的,即我们不需要重新实现餐厅接口。那么我们就可以用适配器模式将食堂接口适配成餐厅接口
//食堂接口
public interface Canteen {
public Dinner saleDinner();
public void close();
}
//餐厅接口
public interface Restaurant {
public Dinner orderDinner();
}
//食堂适配器,将食堂接口转换成'餐厅接口'
public class CanteenAdapter implements Restaurant{
private Canteen canteen;
public CanteenAcapter(Canteen canteen){
this.canteen = canteen;
}
public Dinner orderDinner(){
return canteen.saleDinner();
}
}
以上就是适配器的简单实现过程。适配器使用组合的方式,组合被适配者,然后实现希望转换的接口,将方法委托给配饰者实现。即让食堂包装起来,让它不像自己而像餐厅。
对象适配器
对象适配器指的就是上面一种,基于接口的实现,和组合
类适配器
类失配器是基于多重继承实现的
public class Target{
public request(){
...
}
}
public class Adaptee{
public void specificRequest(){
...
}
}
public class Adapter extends Target , Adaptee{
//重写父类的request方法
public request(){
//将该方法委托给Adaptee的方法
return this.specoficRequest();
}
}
值得注意的是适配器并不只是只能适配一种接口,其实可以根据自己的需要适配多个接口,因为是基于实现接口和组合的方式,所以很灵活。
适配器模式跟装饰者模式很像,某些时候他们都可以实现同一种功能,但这两模式的目的是不同的,适配器模式的目的是转换接口,而装饰者模式的目的是增强目标类的方法,即在目标原方法的基础上加入新的责任。