原文地址:http://leihuang.org/2014/12/06/adapter/
Structural 模式 如何设计物件之间的静态结构,如何完成物件之间的继承、实 现与依赖关系,这关乎着系统设计出来是否健壮(robust):像是易懂、易维护、易修改、耦合度低等等议题。Structural 模式正如其名,其分类下的模式给出了在不同场合下所适用的各种物件关系结构。
什么是适配器呢?
举个例子吧,就比如程序员喜欢用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 !