一、适配器模式
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??——我一直不太信任自己的记忆力,所以我把它们都写下来
? ? 大家都知道,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