--[i]Head First Design Pattern[/i]
定义:
适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
"两种适配器"
1、对象适配器(组合)
利用组合的方式将请求传送给被适配者。
[img]/upload/attachment/58840/940e895d-8f83-38dc-9d6e-e52311ab07a8.bmp[/img]
2、类适配器(继承)
在支持多重继承的语言里,利用多重继承实现。
Java:在Java中只能使用对象适配器方式。
客户使用适配器的过程如下:
1、客户通过目标接口调用适配器的方法对适配器发出请求;
2、适配器使用被适配者接口把请求转换成被适配者的一个或多个调用接口;
3、客户接收到调用的结果,但未察觉这一切是适配器在起转换作用。
涉及角色:
1、客户 2、目标接口(target interface) 3、适配器 4、被适配者
枚举迭代器适配器
要点分析:
1、客户只看到目标接口;
2、适配器实现目标接口;
3、适配器与被适配者组合;
4、所有的请求都委托给被适配者。
定义:
适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
"两种适配器"
1、对象适配器(组合)
利用组合的方式将请求传送给被适配者。
[img]/upload/attachment/58840/940e895d-8f83-38dc-9d6e-e52311ab07a8.bmp[/img]
2、类适配器(继承)
在支持多重继承的语言里,利用多重继承实现。
Java:在Java中只能使用对象适配器方式。
客户使用适配器的过程如下:
1、客户通过目标接口调用适配器的方法对适配器发出请求;
2、适配器使用被适配者接口把请求转换成被适配者的一个或多个调用接口;
3、客户接收到调用的结果,但未察觉这一切是适配器在起转换作用。
涉及角色:
1、客户 2、目标接口(target interface) 3、适配器 4、被适配者
枚举迭代器适配器
public class EnumerationIterator implements Iterator{ //实现目标接口
private Enumeration enum; //被适配者
public EnumerationIterator(Enumeration enum){ //传入被适配者
this.enum = enum;
}
public boolean hasNext(){
return enum.hasMoreElements();
}
public Object next(){
return enum.nextElement();
}
//不支持此方法
public void remove(){
throw new UnsupportedOperationException();
}
}
要点分析:
1、客户只看到目标接口;
2、适配器实现目标接口;
3、适配器与被适配者组合;
4、所有的请求都委托给被适配者。