设计模式五:适配器模式
来源:互联网 发布:成都中科大旗软件 编辑:程序博客网 时间:2024/05/10 03:08
定义:
将一个类的接口转换成客户希望的另外一个接口。
目标(Target)角色:定义Client使用的接口。
被适配(Adaptee)角色:这个角色有一个已存在并使用了的接口,而这个接口是需要我们适配的。
适配器(Adapter)角色:这个适配器模式的核心。它将被适配角色已有的接口转换为目标角色希望的接
对象适配器模式
适配器角色对于被适配角色的适配是通过组合来完成的。
将一个类的接口转换成客户希望的另外一个接口。
目标(Target)角色:定义Client使用的接口。
被适配(Adaptee)角色:这个角色有一个已存在并使用了的接口,而这个接口是需要我们适配的。
适配器(Adapter)角色:这个适配器模式的核心。它将被适配角色已有的接口转换为目标角色希望的接
分类:
适配器角色对于被适配角色的适配是通过继承完成的。由于在java中不支持多重继承,而且继承有破坏封装之嫌,众多的书中(包括《设计模式》)都提倡使用组合来代替继承。
类适配器模式类图
对象适配器模式
适配器角色对于被适配角色的适配是通过组合来完成的。
对象适配器模式类图
举例:
类图
源码
/** * 测试类 */public class Test {public static void main(String[] args) {//给HTC手机充电Charger htcCharger = new HtcCharger();htcCharger.exportPower();//给N97手机充电Charger n97Charger = new N97Charger();n97Charger.exportPower();//给N98手机充电Charger n98Charger = new N98Charger();n98Charger.exportPower();}}
/** * 充电器接口 */public interface Charger {//输出电流public void exportPower();}
/** * HTC充电器 */public class HtcCharger implements Charger{@Overridepublic void exportPower() {System.out.println("HTC充电器:输出5V电压!");}}
/** * N97充电器,类的适配器模式 */public class N97Charger extends NokiaCharger implements Charger{@Overridepublic void exportPower() {if(!this.check()){this.export();System.out.println("N97手机:充电中……");}}}
/** * N98充电器,对象的适配器模式 */public class N98Charger implements Charger{private NokiaCharger nokiaCharger = new NokiaCharger();@Overridepublic void exportPower() {if(!nokiaCharger.check()){nokiaCharger.export();System.out.println("N98手机:充电中……");}}}
/** * 诺基亚充电器 */public class NokiaCharger {public boolean check(){System.out.println("诺基亚充电器:检查电池电量!");return false;}public void export(){System.out.println("诺基亚充电器:开始充电!");}}
- 设计模式五:适配器模式
- 设计模式五-适配器模式
- 设计模式(五)适配器
- 初学javascript设计模式(五)适配器模式
- 设计模式心得(五) 适配器模式
- java设计模式(五)---适配器模式
- C++设计模式[五]适配器模式
- 设计模式(五)--适配器模式
- 设计模式系列之五:适配器模式
- [设计模式](五):适配器模式(Adapter)[类适配器、对象适配器、接口适配器]
- 设计模式:适配器模式
- 设计模式------适配器模式
- 设计模式:适配器模式
- 设计模式---适配器模式
- 设计模式 适配器模式
- 设计模式 - 适配器模式
- 设计模式--适配器模式
- 设计模式-适配器模式
- Android SIP开源通讯项目 -- SipDroid
- OCP-043 ASM_DISKSTRING
- JAVA-SIP协议栈 -- JAIN-SIP
- 架构师知识碎片整理
- Linux 复习备忘录8
- 设计模式五:适配器模式
- Android中使用selector动态改变imageView或ImageButton的背景和在GridView中应用
- js 大量框架
- 不一样的Python(9)——模块
- 开机后自动关机的功能
- 使用可重入函数进行更安全的信号处理
- PKU Online Judge 1033:Kingdom [状态DP]
- dm9000问题读取ID 出问题解决方法
- 关于Devexpress xtraGrid中数字字段删除数字后出现输入字符串格式不正确问题的解决方案