0

私には次のような特定の要件があります:

serviceUtility.invokeService(requestObj)

上記のメソッドは、を取りますがrequestObj、これは常に同じオブジェクトであるとは限りません。機能に応じて、任意のオブジェクトを含めることができます。ただし、これinvokeServiceは、オブジェクトに基づいて要求を処理する必要がある一般的なメソッドです。オブジェクトを動的に識別し、同じように動作するように自動化したいと思います。つまり、serviceUtilityクラスの実装はどのタイプのオブジェクトでも機能します。論理は誰にとっても同じだからです。今、私はオブジェクトタイプをチェックしてロジックを実行しています。

4

3 に答える 3

1

プログラミング言語によっては、リフレクションを使用してこれを動的に行うことができます(Java / C#など)。しかし、それを完全に機能させるのは面倒で難しいでしょう。

可能であれば、コードを再編成し、問題のすべてのクラスが実装する共通のインターフェースを作成する必要があります。そうすれば、それらが正しいメソッドを持っていることを確実に知っており、正確なタイプを発見することなくそれらを呼び出すことができます

于 2012-05-21T10:39:30.860 に答える
1

論理はすべての人にとって同じだからです

この場合、ジェネリックプログラミングを使用する必要があります。たとえば、Javaの場合:

public <T extends Request> void invokeService(T object) {
  object.run();
}

後で、クライアントで:

utility.invokeService(new FooRequest());
utility.invokeService(new BarRequest());
于 2012-05-21T20:22:18.753 に答える
0

「ファクトリメソッド」という名前の創造的なデザインパターンを探しています。

http://www.oodesign.com/factory-method-pattern.html

于 2012-05-21T10:42:23.917 に答える