一、适配器模式
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??——我一直不太信任自己的记忆力,所以我把它们都写下来
? ? 大家都知道,iphone手机充电器手机端插口和android手机的不一样。在朋友家你的iphone快没电了,但是这个穷逼朋友用的是安卓手机,他的充电线我用不了,可咋整?别怕,苹果公司知道自己很偏执,但是又不能顺应潮流,所以买iphone的时候附带了一个转接头,就下面这个东西
? ? 本文要讨论的是适配器模式,它的主要作用是在新接口和老接口之间进行适配。就像上面的例子,用安卓充电器给iphone充电,那需要一个转接头(适配器)。给安卓充电器手机端插上转接头然后给iphone充电,这一刻是不是很安心!下面用代码来展示下这个适配器模式
? ?先看看原配android充电器
?
/**
* android充电器接口
* @author albert
*
*/
public interface AndroidChargerInterface {
public void charge();
}
/**
* @author albert
* android充电器实现类
*/
public class AndroidCharger implements AndroidChargerInterface {
public void charge() {
System.out.println("Android手机充电");
}
}
//测试类,给android手机充电
public class Test {
public static void main(String[] args) {
//初始化一个android充电器
AndroidChargerInterface charger = new AndroidCharger();
//开始充电
charger.charge();
}
}
?运行Test打印结果:Android手机充电。
?
? 现在我在朋友家,需要用朋友的android手机充电器,上面的AndroidChargerInterface接口和AndroidCharger类都是不可变的。如果想使用这一套API,那必须自己写代码解决。下面是苹果充电的接口和类
?
/**
* iphone充电器接口
* @author albert
*
*/
public interface IphoneChargerInterface {
public void charge();
}
/**
* @author albert
* iphone充电器实现类
*/
public class IphoneCharger implements IphoneChargerInterface {
public void charge() {
System.out.println("IPhone手机充电");
}
}
/**
* @author albert
* 转接头(适配器)
*/
public class ChargeAdapter implements AndroidChargerInterface {//实现老接口
private IphoneChargerInterface charger;//传入新接口
public ChargeAdapter(IphoneChargerInterface charger) {
this.charger = charger;
}
//接好转接头,给iphone充电
public void charge() {
charger.charge();
}
}
publicclass Test {
public static void main(String[] args) {
//初始化一个iphone充电
IphoneChargerInterface charger = new IphoneCharger();
ChargeAdapter adapter = new ChargeAdapter(charger);
//开始给iphone充电
adapter.charge();
}
}
?
??
?
原文:http://zyqwst.iteye.com/blog/2290321