是否可以为具有不同接口的几个对象定义一个调用处理程序(代理)?
因为这个代理对对象所做的(所有检查等)是相同的(并且它们共享一个锁管理表,我更喜欢将它放在代理上的一个地方),
有没有办法做到这一点?
谢谢,阿里安
是否可以为具有不同接口的几个对象定义一个调用处理程序(代理)?
因为这个代理对对象所做的(所有检查等)是相同的(并且它们共享一个锁管理表,我更喜欢将它放在代理上的一个地方),
有没有办法做到这一点?
谢谢,阿里安
好吧,这样做的方法是拥有一个表示您的公共 IH 代码的基类,然后为每个特定调用将其子类化。
否则,您可以检查进来的对象,并确定适当的操作:
public Object invoke(Object proxy, Method method, Object[] args) {
if (proxy instanceof InterfaceA) {
handleInterfaceA(proxy, method, args);
} else if (proxy instanceof InterfaceB) {
handleInterfaceB(proxy, method, args);
}
}
但是由于 Java 已经有一个类调度机制,使用它比使用一堆 IF 或一个 switch 语句更好。
Proxy.newProxyInstance
专门接受一个接口数组,返回的代理实现了所有接口:
Proxy.newProxyInstance(this.getClass().getClassLoader(), new Class[]{Foo.class, Bar.class} , new Handler())
我想您必须将代理转换为每个不同的接口,然后才能调用它的相关方法,但无论如何您总是必须转换它,即使您只实现一个接口。
我不确定问题是什么;如果这不是你的意思,那么也许你可以澄清一下?