3

さて、これは奇妙な質問かもしれませんし、私は間違った方向に向かっているのかもしれませんが、ここに私の問題があります:

Tagオブジェクトのコレクションを保持するSearchFormオブジェクトがあります。ユーザーがTagオブジェクトをクリックすると、それ自体が強調表示され、イベントがトリガーされます。SearchFormクラスはこのイベントをリッスンし、それ自体を送信します。TagオブジェクトはSearchFormとは関係ありません。

ここまでは順調ですね。

これで、一部のタグはクリックされたときに他のタグをアクティブにする必要があります。各タグは、アクティブ化する必要のある他のタグを認識しています。ただし、そのためには、検索フォームが保持するタグのコレクション全体について知っている必要があります。

タグインスタンス(=コレクションアイテム)に他のすべてのタグ(=コレクション)の完全なリストへの参照がある場合、それは「悪い」でしょうか?

もちろん、このようなものは実行可能です:

Tag is clicked -> SearchForm is notified -> checks if the clicked tag must activate some others -> SearchForm activates the needed Tags itself

しかし、これは少し厄介に思えますか?

4

3 に答える 3

4

何か問題があるようには思えません。コレクション内の他のアイテムについて知る必要があるアイテムがコレクション内にある場合、コレクション全体についても知ることは完全に合理的です。

ほとんどのGUIフレームワーク、およびおそらく作業しているDOM自体には、それらが含まれているコレクションを認識しているコレクション項目があります(DOMでは、任意の要素で、parentElementその親を取得するために呼び出すことができます)。

一般に、結合を減らすために、オブジェクトが必要な最小値を超えて「認識」しないのは良いことです。しかし、オブジェクトが何かについて知る必要がある場合、それへの参照を与えることは不合理ではありません。

于 2009-10-23T13:11:42.457 に答える
1

コレクション内のアイテムがその所在を知ることは珍しいことではありません...リンクリストまたはツリーを考えてください。タグにリスト全体を知らせたくない場合は、関連するタグのみへの参照を追加できます。

于 2009-10-23T13:12:46.637 に答える
0

単なるオブザーバーデザインパターンだと思います。

私はjavascriptを知りませんが、それは実行可能であるはずだと思います。

いずれの場合も、リストをハードコーディングすることは避けてください。

于 2009-10-23T13:11:07.170 に答える