适配器模式用代码如何实现

要是java中的适配器模式... 要是java中的适配器模式 展开
 我来答
Irreappearable
2010-01-31 · TA获得超过4957个赞
知道大有可为答主
回答量:1423
采纳率:25%
帮助的人:3185万
展开全部
interface IA {
void doSomethingA();
……
}
class Adaptee implements IA {……}
interface IB {
void doSomethingB();
……
}

假设现在有一个方法要IB类型的参数,但是我只有IA类型的对象,这时候就可以写一个适配器,然后用IA接口的方法来实现IB接口:
class Adapter implements IB {
private IA a;
Adapter(IA a) {this.a=a;}
public void doSomethingB() { a.doSomethingA(); }
}

因为我想不出好例子,所以还是请你参考Head First 设计模式这本书吧,那里有比较形象的例子,或者你也可以考虑java标准库中已有的例子:

早期的java容器类的迭代器用的是Enumeration,他有两个方法hasMoreElements()和nextElement(),所以你在编程中可能会遇到Enumeration对象,但是后来这个接口被Iterator取代了,新的代码都用了后者,那么你要如何将一个Enumeration对象传到一个只接受Iterator对象作为参数的方法中呢?可以的选择就是适配器,比如:

class EnumerationAdapter implements Iterator {
private Enumeration e;
EnumerationAdapter(Enumeration e) {this.e=e;}
public boolean hasNext() { return e.hasMoreElements(); }
public Object next() { return e.nextElement(); }
public void remove() { throw new UnsupportedOperationException(); }
}

注:
1. 以上代码都是直接在网页中手打,没有去编译过,所以可能有些小的拼写错误甚至语法疏忽,但总体思想是对的
2. java的迭代器Iterator和Enumeration现在都是泛型的,但是为了简洁以及说明问题的关键,上面的代码就去掉了这个特性
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式