我想在 Java 中实现某种命令模式。我想要一个像 Map<String commandkey, Function()>
. 所以我有一个对象(Map
,或任何关联...) HashMap
,LinkedHashMap
其中键是字符串命令,值是我想通过键调用的函数。这些函数必须是异构的,因为它们可以具有不同的返回值、参数数量、名称(不同的签名)。例如,在 C++ 中,我可以通过 boost::function 创建函数指针或仿函数的映射。所以有人能说出在 Java 中实现这样一个习语(或者如果我们从广义上看是一种模式)的所有方式。我知道两种方法:
- 反射(减去:缓慢且非常丑陋)
- 使用接口和匿名类(减号:函数必须具有相同的签名)
详细的解释、文章的链接等将非常有帮助。