适配器模式 追MM
程序员文章站
2022-05-25 15:05:44
...
情人节快到了,应该给女朋友送礼物了。借此机会恶搞下适配器模式
引用
适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
需求是,原先送给女朋友一辆自行车,作为代步工具,现在有点钱了准备升级一下,到摩托车。。。。总结。。也许它能作为代步工具,不一定是自行车,有可能是个像自行车的摩托车。。。。
看一下自行车接口
package adpter.demo; public interface Bike { public void go(); }
再看看我女朋友现有的自行车
package adpter.demo; public class RedBike implements Bike{ public void go(){ System.out.println("自行车 速度很慢!!!"); } }
不过自行车真的太慢了。。。
在隆重介绍新买的摩托车。。
package adpter.demo; public interface Moto { public void go(); }
package adpter.demo; public class RedMoto implements Moto{ public void go() { System.out.println("摩托车 速度很快!!!!!!"); } }
现在我女朋友天天上班骑自行车如下。。。。
package adpter.demo; public class ChasingGirl { public void gotoCompany(Bike bike){ bike.go(); } }
发现了接口是自行车,现在遇到麻烦了。。因为自行车和摩托车接口不同。。。所以我需要一个适配器来解决。
package adpter.demo; public class MotoAdapter implements Bike{ private Moto moto; public MotoAdapter(Moto moto){ this.moto=moto; } public void go() { moto.go(); } }
测试一下
package adpter.demo; public class ChasingGirl { public void gotoCompany(Bike bike){ bike.go(); } public static void main(String[] args){ ChasingGirl chasingGirl = new ChasingGirl(); chasingGirl.gotoCompany(new RedBike()); chasingGirl.gotoCompany(new MotoAdapter(new RedMoto())); } }
结果如下:
自行车 速度很慢!!!
摩托车 速度很快!!!!!!
已经完全符合我女朋友的需求了。
最后祝大家情人节快乐。
上一篇: LMAP php不实施