java设计模式之适配器模式
来源:互联网 发布:算法设计与分析 视频 编辑:程序博客网 时间:2024/05/22 14:20
适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原来接口不兼容的类可以合作无间。
适配器又包含两种,一种是对象适配器,另一种是类适配器。
两者的区别:对象适配器采用组合的方式实现,类适配器采用继承的方式实现。
类适配器类图:
适配器Adapter继承Adaptee并实现Target接口来实现。
对象适配器类图:
适配器Adapter实现Target接口,在request方法中调用Adaptee对象的具体实现。
下面结合充电器适配器的例子来说明。
类图:
这个例子是通过适配器来使用安卓充电器给苹果设备充电。chargeAdapter的实现方式不同决定了是类适配器还是对象适配器。
接口AndroidCharger代码实现:
public interface AndroidCharger { public void charge();}
AndroidCharge类代码实现:
public class AndroidCharge implements AndroidCharger{ @Override public void charge() { // TODO Auto-generated method stub System.out.println("使用安卓充电器充电..."); }}
接口AppleCharger代码实现:
public interface AppleCharger { public void charge();}
AppleCharge类代码实现:
public class AppleCharge implements AppleCharger{ @Override public void charge() { // TODO Auto-generated method stub System.out.println("使用苹果充电器充电..."); }}
对象适配器ChargeAdapter代码实现:
public class ChargeAdapter implements AppleCharger{ AndroidCharger androidCharger; public ChargeAdapter(AndroidCharger androidCharger){ this.androidCharger = androidCharger; } @Override public void charge() { // TODO Auto-generated method stub androidCharger.charge(); }}
类适配器ChargeAdapter2代码实现:
public class ChargeAdapter2 extends AndroidCharge implements AppleCharger{}
Client类代码实现:
public static void main(String[] args){ AppleCharger appleCharger = new AppleCharge(); appleCharger.charge(); //使用对象适配器模式 AndroidCharger androidCharger = new AndroidCharge(); ChargeAdapter adapter = new ChargeAdapter(androidCharger); adapter.charge(); //使用类适配器模式 ChargeAdapter2 adapter2 = new ChargeAdapter2(); adapter2.charge(); }}
运行结果:
使用苹果充电器充电...使用安卓充电器充电...使用安卓充电器充电...
0 0
- java设计模式之适配器设计模式
- java设计模式之适配器设计模式
- JAVA设计模式之适配器
- 深入浅出Java设计模式之适配器模式
- 深入浅出Java设计模式之适配器模式
- Java设计模式之适配器模式
- 深入浅出Java设计模式之适配器模式
- Java设计模式之适配器模式
- java 设计模式之七-适配器模式
- java设计模式之适配器模式
- Java设计模式之适配器模式
- java设计模式之适配器模式
- Java:设计模式之适配器模式Adapter
- java设计模式之适配器模式
- java设计模式之适配器模式
- Java设计模式之适配器模式
- Java设计模式之适配器模式
- java与设计模式之适配器模式
- 考试3
- Kaldi编译安装过程填坑记录-2017.1.10
- codevs 拦截导弹 1044
- SQL 模糊查询
- python之twisted模块安装
- java设计模式之适配器模式
- 程序人生:我们工作到底为了什么
- STL源码剖析
- 帮助别人也是帮助自己,字符串
- 为啥学前端的人那么多,但好的前端工程师却很难找
- Java中的注释
- 考试4
- Apache httpd设置HTTPS双向认证
- 九度OJ-1194-八进制