我有几个类想要相互传递一些信息并在以后使用该信息(回调模式)被回调。
在我的应用程序中,这种机制有两个目的:
- 计划/延迟执行
- 涉及消息传递的异步执行
我的对象基本上互相说“当你完成 X 后,给我回电话并告诉我用 Z 做 Y(因为到那时我会忘记它)”。X 可能只是在等待正确的时间,但也与远程服务通信或调用本地函数。
现在,如果 Java 中有函数指针(或等价物),我会实现一些“作业”类,其中包含一个加它需要的参数。例如,在 PHP 中,这个结构必须存储一个类名、一个函数名和一个参数数组。在 C 中,它是一个指向函数的指针,我必须为所有调用设置相同的参数编号和类型。
在 Java 中,通常的方法是拥有一个由所有想要回调的类实现的接口,如下所示:
public interface ICallable {
public void call_me(Object data);
}
现在这对我不起作用,因为
- 要回调的对象可能有一组不同的方法来进行调用
- 呼叫者不是决定应该拨打什么电话的人
也许我的问题是我试图为各种回调建立一个通用的数据结构和调用过程,但原则上,这对我来说似乎很有意义。
在 Java 中处理这种情况的好的设计模式是什么?