适配器模式:将一个类的接口转换成客户期望的另一个接口。
客户使用适配器的过程:
a. 客户通过目标接口(Duck)调用适配器(TurkeyAdapter )的方法,对适配器发出请求。
b. 适配器(TurkeyAdapter )使用被适配者接口(Turkey)把请求(quack())转换成被支配者的一个或多个方法(gubble())。
c. 客户接收到调用的结果,但并未察觉这一切是适配器在起转换作用。
代码示例:
public interface Duck
{
public void quack();
public void fly();
}
public interface Turkey
{
public void gubble();
public void fly();
}
现在,假设你缺鸭子对象,想用火鸡对象来冒充。。。适配器的干活。。。
public class TurkeyAdapter implements Duck // 你需要实现想转换成的接口,也就是客户所期望看到的接口
{
Turkey turkey; // *
public TurkeyAdapter(Turkey turkey)
{
this.turkey = turkey;
}
public void quack()
{
turkey.gubble();
}
public void fly()
{
turkey.fly();
}
}
该模式可以通过创建适配器进行接口转换。让不兼容的接口编程兼容,这可以让用户从实现的接口解耦。
这个适配器充满着良好的OO设计原则:使用对象组合(上注 *),以修改的接口包装被适配者:这种做法有个额外的优点:被适配者的任何子类(实现接口Turkey的类),都可以搭配着适配器使用。
原文:http://www.cnblogs.com/hachun/p/3578143.html