首页 > 代码库 > 设计模式:适配器模式
设计模式:适配器模式
原文地址:http://leihuang.org/2014/12/06/adapter/
Structural 模式 如何设计物件之间的静态结构,如何完成物件之间的继承、实 现与依赖关系,这关乎着系统设计出来是否健壮(robust):像是易懂、易维护、易修改、耦合度低等等议题。Structural 模式正如其名,其分类下的模式给出了在不同场合下所适用的各种物件关系结构。
- Default Adapter 模式
- Adapter 模式
- Bridge 模式
- Composite 模式
- Decorator 模式
- Facade 模式
- Flyweight 模式
- Proxy 模式
什么是适配器呢?
举个例子吧,就比如程序员喜欢用linux编程,但是呢,我们有时又需要用qq,而linux下面没有qq,怎么办?于是就有了wine这个东西.这里的wine就是一个适配器(WineAdapter),而linux就是适配源(LinuxAdaptee).这里我们将windows平台,定义为一个接口(IWindows).
不过适配器模式有两种实现方式,一种是类适配器(适配器继承适配源),第二种是对象适配器(适配器中含有一个适配源的对象)
类适配器
IWindows 接口
public interface IWindows { public void coding() ; public void qq() ; }
LinuxAdaptee 类
public class LinuxAdaptee { public void coding(){ System.out.println("print 'Hello World'"); } }
WineAdapter 类
public class WineAdapter extends LinuxAdaptee implements IWindows { public void coding() { super.coding(); //也可以定义在wine中编码方式 } @Override public void qq() { System.out.println("qq"); } }
对象适配器
下面时对象适配器的类结构图
实现的话,只有WineAdapter适配器的不同
public class WineAdapter implements IWindows { private LinuxAdaptee linux = null ; public WineAdapter(LinuxAdaptee linux){ this.linux = linux ; } public void coding() { linux.coding(); } @Override public void qq() { System.out.println("qq"); } }
2014-12-06 22:11:17
Brave,Happy,Thanksgiving !
设计模式:适配器模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。