-2

これは倫理的な問題のようなものですが、私はそれについて非常に興味があります。

したがって、いくつかの実装と一連のメソッドを備えた Strategy-Interface があり、Strategy-Interface を引数として取る Strategy パターンがあります。

例として次のことを想定してみましょう。

  • Interface: SearchStrategy
  • Class: StringSearch implements SearchStrategy
  • Class: IntSearch implements SearchStrategy
  • etc.

次に、次のような方法があります

doSearch(String a, String b, SearchStrategy strategy)

戦略オブジェクトをどのように処理しますか? インスタンスまたはクラスを渡しますか?

A:doSearch("Hello","World", new StringSearch());

また

B:doSearch("Hello","World", StringSearch.class);

したがって、インスタンスを作成して渡すか、Class オブジェクトを渡してメソッドにインスタンスを作成させます。それに対するより良い、よりクリーンな方法は何ですか?

パフォーマーンはどうですか?確かに、強力なサーバーではパフォーマンスに大きな違いはありませんが、リソースが少なくプロセッサが遅い組み込みシステムではどうでしょうか?

4

2 に答える 2

2

もちろん、インスタンスです。クラスを渡すと、doSearch()メソッドはリフレクションを使用して Strategy オブジェクトをインスタンス化します。これは、すべてのクラスがいくつかの規則に同意する場合にのみ機能します (デフォルトのコンストラクターを持つなど)。

また、何らかの状態 (caseSensitive フラグ、別のコンテキスト オブジェクトへの参照など) を持つ戦略を渡すことはできません。

パフォーマンスがこれとどのように関係しているのかわかりません。

于 2013-05-16T12:57:05.107 に答える