适配器举例
相信很多人都知道什么是显卡,也有很多人知道显卡的本名——图形适配器。恩,是的,正好这回说说Apater模式,就拿显卡来例子来分析一下Adapter模式。
我们知道显示器(Client)是用来显示图形的,它是不能显示数据,它只能够接受来自图形发送设备Target的信号。可是我们手头上只有CPU(Adaptee)这个产生各种描述图形的数据的数据发送器。我们需要将这些数据让显示器进行显示,可是这两个部件却是不兼容的。于是我们需要一个中间设备,它能够将CPU“适配”于显示器,这便是我们的显卡——图形适配器(Adapter)。
该段话援引:http://www.cnblogs.com/java-my-life/archive/2012/04/13/2442795.html
看下代码大家应该就能清楚了
package Adapter;
/**
* 定义一个已经存在的接口,这个接口需要适配。
* @author Administrator
*
*/
public class Adaptee {
public void adapteeMethod() {
System.out.println("Adaptee method!");
}
}
package Adapter;
public interface Target {
void adapteeMethod();
void adapterMethod();
}
package Adapter;
/**
* 对Adaptee的接口与Target接口进行适配
* @author Administrator
*
*/
public class Adapter implements Target {
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
public void adapteeMethod() {
adaptee.adapteeMethod();
}
public void adapterMethod() {
System.out.println("Adapter method!");
}
}
package Adapter;
/**
* 解释:将一个类的接口转换成客户希望的另外一个接口。
* Adapter模式使得原本由于接口的兼容而不能一起工作的那些类可以一起工作。
适用性
1.你想使用一个已经存在的类,而它的接口不符合你的需求。
2.你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那接口可能不一定兼容的类)协同工作。
3.(仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。
* @author Administrator
*
*/
public class Test {
public static void main(String[] args) {
Target target = new Adapter(new Adaptee());
target.adapteeMethod();
target.adapterMethod();
}
}