设计模式-适配器模式
一、适配器模式
——我一直不太信任自己的记忆力,所以我把它们都写下来
大家都知道,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(); } }
public class Test { public static void main(String[] args) { //初始化一个iphone充电 IphoneChargerInterface charger = new IphoneCharger(); ChargeAdapter adapter = new ChargeAdapter(charger); //开始给iphone充电 adapter.charge(); } }
其实,在研究设计模式的时候心里要明白设计模式都是从实际生活抽象出来的。这样我们也好理解它,毕竟设计模式是比较晦涩抽象的。这项能力的提升更有助于我们从业务到软件的一个转换。优秀的Programmer在这项能力确实比普通的码农强很多。大家一起向这个方向努力吧!