私はクラスのGUIとロジックのクラスを持っている、非常に悪いGUIにロジックとロジックにGUIのリファレンスを保持しているのですか?2つのクラスが互いに参照していますか?
6
A
答えて
0
あなたがそれを避けることができる場合は、おそらくそうです。それ以外の場合は、後で循環依存性に関する多くの問題が発生する可能性があります。
本当にお互いを知る必要がありますか、または2つを参照する第3の「制御」概念がありますか?
11
"論理"クラスに "gui"クラスの知識を持たせることは、原則として悪いことです。分離の背後にあるアイデアは、モデル/ビューデザインパターン(またはモデル/ビュー/コントローラ)です。ビューにはモデルへの参照が必要です。モデルがビューへの参照を必要とする理由を本当に詳しく見てください。モデルが情報をビューイベントに送信する必要があるときは、通常、リスナーが使用されます(例については、javax.swingテーブルとリストモデルを参照してください)。
5
これは避けてください。 GUIでは、ドメインロジックへの参照を持つことができますが、ドメインロジックではGUIへの参照を持たないようにしてください。
なぜですか? そうでなければ、GUI &ドメインロジックを別々のファイルに分割する利点はありません。あなたのロジックがあなたのGUIに依存している場合、別のGUIでロジックを使うことはできません。
だから、あなたのロジックからあなたのGUIへのこの依存関係を回避するか、あるいはその抽象化を行うべきです。
私はここで自分を明確にしたいと思っています。 :)
0
ロジッククラスに何かのインターフェイスを公開して、ロジッククラスが何か変更されたときにGUIを更新する必要があるかもしれません。
ロジックは、GUIインプリメンテーションを直接的に知るべきではなく、そのインターフェイスのみを知っているべきです。
Observer Patternがこれに使用されることがあります。
関連する問題
- 1. 2つのオブジェクト参照が互いにポイントします
- 2. お互いを参照する2つのクラス
- 3. 2つのシングルトンクラスを互いに参照できますか?
- 4. コンストラクタを持つ2つのクラスは、互いに参照するようになっていますか?
- 5. メンバーが互いに参照しているC++クラス
- 6. 互いに参照するPythonクラス
- 7. スマートポインタを使用して互いに参照を持つ2つのクラスを設計する
- 8. 2つのテーブル間の相互参照
- 9. お互いを参照する2つのテーブル
- 10. Qtの2つのクラスが互いにアクセスします
- 11. 2つのJavaライブラリが互いにインポートしていますか?
- 12. SQLで2つのテーブルを参照していますか?
- 13. 2つのテーブルを相互参照して結果を得る
- 14. Laravel - クラスを参照しています
- 15. grails i18nラベルは相互参照していますか?
- 16. 2つのクラス間の参照
- 17. 2つのクラスの参照オブジェクトC#
- 18. 2つのプログラムがお互いに対戦しています
- 19. 2つのpythonモジュールが互いにアクセスしています
- 20. 平均2つのテナンシー(複数のコレクションセーブを互いに参照する)
- 21. 2つのRubyクラスはお互いに依存します
- 22. SQLでは、2つのテーブルが互いに参照することはできますか?
- 23. gcc:相互参照クラスのコンパイル
- 24. クラスは、私は2つのクラスを以下している互いに
- 25. 2つのメソッド参照が同じメソッドを参照しているかどうかを確認する方法?
- 26. C++では、2つのクラスが互いにアクセスするようにします
- 27. Typescript - 相互参照するクラスは使用できますか?
- 28. 参照カウントについてまだ混乱しています
- 29. 静的クラスのスタイル、フォント、イメージを参照していますか?
- 30. InfoPath 2010:スタンドアロンクラスライブラリからXmlFormHostItemクラスを参照していますか?