MVCを実装する前にMVC を適切に理解するための私の探求における 3 番目の質問:
私は2つのケースを念頭に置いています:
- プライマリ アプリケーション ウィンドウは、設定ウィンドウを起動する必要があります。(あるビューが別のビューを呼び出します。)
- アプリケーションのプライマリ モデルは、設定モデルのプロパティにアクセスする必要があります。(あるモデルが別のモデルにアクセスします。)
これらの質問は、どちらも Model-View-Controller トリプレット間の通信に関係しているという点で関連しています。これは、Google であまり議論されていないトピックです。
これを修正する明白な方法は、モデル間のトランザクションを処理し、コントローラーが互いのメソッドを呼び出せるようにする最上位の「アプリケーション」オブジェクトにすべてをラップすることです。私はこれが実装されているのを見てきましたが、それが良い考えだとは確信していません。コントローラーが複数のモデルを監視し、複数のビューに応答する可能性も見られますが、これは非常に雑然として追跡が困難になるようです。
この種のクロストークを実装する最善の方法についての提案はありますか? 非常に明白な質問のように感じますが、十分に文書化された解決策を見つけることができませんでした。
より広い意味で、この種の MVC の問題に対する典型的なアプローチを示すリンクを誰かが持っている場合は、それを見てみたいです。堅実で自明ではない参考文献を見つけるのはあまり運がありませんでした。Python での例は素敵ですが、喜んで何でも読みます。
編集1:
以下で非常に興味深いことが述べられていますが、一般的に、私が説明したアプローチに問題がある人は誰もいないようです。Vincent が説明している FrontController 設計は、すでにほとんど怠惰な形になっています。そのパターンを実装する上で問題が発生することは確かにないと思いますが、モデル間の通信に関する問題に実際に対処した人は誰もいないようです。すべての答えは、単一のモデル内のオブジェクト間の通信に対処しているようです。私は、アプリケーションの個別のコンポーネントに対して個別のモデルを維持することに関心があるので、50 の状態プロパティを 1 つのモデル クラスに詰め込みません。代わりにサブモデルとして維持する必要がありますか?