在Java中向具有相同接口的其他类分派函数调用

在Java中向具有相同接口的其他类分派函数调用,java,Java,我有两个类A和B,它们都实现了接口Z。现在,对于接口Z的一些函数(Z.f1,Z.f2,Z.f3,…),类A应该只作为类B对象的调度器工作 public class A implements Z{ private B b; //instantiated in constructor of A @Override public String f1(int p) { return b.f1(p); } ... Java中是否有一种通用的方法来实现这一点?如果您的意思是在接口Z中声明了方法f

我有两个类A和B,它们都实现了接口Z。现在,对于接口Z的一些函数(Z.f1,Z.f2,Z.f3,…),类A应该只作为类B对象的调度器工作

public class A implements Z{

private B b;  //instantiated in constructor of A

@Override
public String f1(int p)
{
  return b.f1(p);
}
...

Java中是否有一种通用的方法来实现这一点?

如果您的意思是在接口
Z
中声明了方法
f1()
,那么您要实现的模式称为包装器或装饰器


在java中,您可以使用java 1.4中引入的动态代理创建通用实现。

我不这么认为。但有时IDE可以帮助创建所有简单的方法来委派调用。有时候你可以找到第三方的课程来做这件事。例如,番石榴(http://code.google.com/p/guava-libraries/)拥有大量ForwardingXXX类,默认情况下,这些类将所有内容委托给其他对象。例如,ForwardingMap将所有调用委托给另一个映射。您需要覆盖不希望委派的方法。

我不确定有没有具有1个StackOverflow point的人想要处理动态代理。:-)有没有一个关于如何使用它们的非常好、简单的教程?谢谢你的提示,看看这个@user949300我是stackoverflow新手,一般来说不是Java或SW开发。看起来是一个很好的概述。不确定“通用”是什么意思。您已经得到了一种模式,其中A(facade)获取对它需要向其发送请求的实现(B)的引用。您是否要求为您生成分派方法?是的,可能。接口Z有大约50个方法,在大多数情况下,我只想在A中将它们分派到B的实例中。它可能是一个代码片段,我可以将它复制粘贴到IDE生成的存根或s.th中。反思?