ウィジェットを表すビュー クラスと、付随するプレゼンター クラスがあります。また、ウィジェットを所有するウィンドウ用のビュー クラスと、ウィンドウ ビュー用の付随するプレゼンターもあります。ウィンドウはウィジェットを操作するので、ウィジェット プレゼンターと通信するにはウィンドウ プレゼンターが必要です。視覚化するには:
+-------------+ +------------------+
| widget_view |<------>| widget_presenter |
+-------------+ +------------------+
^ ^
| |
| V
+-------------+ +------------------+
| window_view |<------>| window_presenter |
+-------------+ +------------------+
私がよくわからないのは、オブジェクトを構築する方法です。MVP アーキテクチャがこの問題に対処していないことは知っていますが、「読者の演習として残しています」。私が試したこと:
- ビューはプレゼンターを構築し、 を
window_view
構築しwidget_view
ます。ただし、window_view
コンストラクターに追加のパラメーターが必要です。これは、プレゼンターをインスタンス化するためだけに、気にする必要のないパラメーターです。window_presenter
また、が にアクセスする方法もわかりませんwidget_presenter
。forにwidget_presenter
セッターを追加して記入するのは、私には適切ではありません。window_presenter
window_view
- 2 人のプレゼンター間の通信回線を取り除きます。を通じて
window_presenter
と話します。との間の通信のためだけに にコードを追加する必要があるため、これも理想的ではないように思えます。また、一方通行の通信のみを許可し、部外者がプレゼンターと通信できるように脂肪を追加します。widget_presenter
window_view
window_view
window_presenter
widget_presenter
widget_view
window_presenter
ここでは、他のプレゼンターと話す必要があるか、他のプレゼンターがさらに他のプレゼンターと話す必要があるため、複雑さが指数関数的に増大することを想像できます。
ここにメディエーター オブジェクトを追加して、これらすべての相互通信と依存関係を吸収することも考えましたが、この時点で、ロジックをプレゼンテーションから分離するという全体的なアイデアは、非常にコストがかかり、非常に複雑に感じ始めます。確かに私はここで何か間違ったことをしています。