适配器模式
来源:互联网 发布:吉他软件电脑版 编辑:程序博客网 时间:2024/06/02 04:48
适配器模式将一个类的接口转换成客户期望的另一个接口,让原本不兼容的接口可以合作无间。
适配器模式有三个特点:
- 适配器对象实现原有接口
- 适配器对象组合一个实现新接口的对象(这个对象可以不识闲一个接口,只是一个单纯的对象)
- 对适配器原有接口方法的调用被委托给新接口的实例的特定方法
下面我们举一个充电器的例子,比如我们去美国旅游,我们来到一家旅店需要用美国充电器才能充电,而我们带的是中国的充电器,那么我们在美国的旅馆就用不成,我们就需要一个适配器来把我们的中国充电器包装成美国充电器。
先定义一个美国充电器接口
public interface IAmerciaCharger{ public void charge();}
然后需要一个美国充电器来实现这个类
public class AmerciaCharger implements IAmerciaCharger{ @Override public void charge(){ System.out.println("美国充电器来充电了"); }}
然后是一个美国旅馆
public class Hotel{private IAmerciaCharger charger;//需要传入美国充电器public Hotel(IAmerciaCharger charger){ this.charger=charger;}public void setCharger(IAmerciaCharger charger){ this.charger=charger;} //在美国充电public void power(){ charger.charge(); }}
然后是我们的中国充电器接口
public interface IChinaCharger{//这里大家肯定好奇,直接实现美国充电器接口不就好了,其实不然,中国充电器和美国充电器内部原理不同,所以各有//各自的充电方式 public void chargeWithChinese();}
下面是中国充电器的实现
public class implements IChinaCharger{ @Override public void chargeWithChinese(){ System.out.println("中国的高大上充电器"); }}
然后是我们的适配器类,把我们中国充电器包装成美国充电器,然后以假乱真在旅馆充电
public class Adapter implements IAmerciaCharger{private IChinaCharger chinaCharger;public Adapter(IChinaCharger chinaCharger){ this.chinaCharger=chinaCharger; } @Override public void charge(){ //这里就是中国的充电器在充电 chinaCharger.chargeWithChinese(); }}
然后就是测试类
public class Test{ public static void main(String []args){ Hotel hotel=new Hotel(); IAmericaCharger america_charger=new AmericaCharger(); hotel.setCharger(america_charger); //美国充电器要来充电了 hotel.power(); //中国要充电怎么办,来找我们的适配器 IChinaCharger china_charger=new ChinaCharger(); Adapter adapter=new Adapter(china_charger); //我们的adapter完全符合标准 hotel.setCharger(adapter); hotel.charge(); }}
阅读全文
0 0
- 适配器及适配器模式
- 适配器及适配器模式
- 适配器模式(类适配器)
- 适配器模式(默认适配器)
- 适配器模式(对象适配器)
- 适配器模式-类适配器
- 适配器模式-对象适配器
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 安装nginx-http-concat和nginx平滑升級
- resteasy自定义参数解析
- 点击搜索进入预编译状态,searbar跟随导航消失
- equals 和 ==
- Linux文件系统的实现
- 适配器模式
- C++之数组形参
- Android平台车牌识别移动端的原理与应用领域
- 机器学习实战-利用PCA来简化数据
- 基本Kmeans算法介绍及其实现
- php常用字符串函数
- 基于netty的websocket服务
- Python学习——enumerate()函数的用法
- PHP 实现后缀表达式(接受四则运算字符串,输出计算结果,附代码)