ある種のコマンドパターンをJavaで実装したいと思います。のような構造にしたい Map<String commandkey, Function()>
。だから私はオブジェクト(Map
、、、または任意の連想...)HashMap
を持っていますLinkedHashMap
。ここで、キーは文字列コマンドであり、値はキーによって呼び出したい関数です。これらの関数は、異なる戻り値、パラメーターの数、名前(異なるシグニチャー)を持つことができるという意味で異種である必要があります。C ++では、たとえば、boost::functionを介して関数ポインターまたはファンクターのマップを作成できます。したがって、Javaでそのようなイディオム(または広義にはパターン)を実装するすべての方法に名前を付けることができます。私は2つの方法を知っています:
- 反射(マイナス:遅くて非常に醜い)
- インターフェイスと匿名クラスの使用(マイナス:関数は同じ署名を持っている必要があります)
詳細な説明や記事へのリンクなどがとても参考になります。