我以前只是在我的視圖中只有一個ApplyPresenter()
方法,但是從技術上講,如果視圖知道演示者並調用演示者的方法,那麼該方法不是被動視圖。MVP被動視圖 - 在哪裏連接視圖的事件?
因此,我不會打電話給presenter.AButtonClicked()
,我可以從視圖中暴露一個事件,如演示者隨後訂閱的event EventHandler AButtonClicked
。我在哪裏訂閱AButtonClicked
?如果構造函數除了字段賦值之外不應該做任何工作,我不能在構造函數中完成。我可以在我的演示者上使用Initialize()
方法(或稱爲Setup()
),但這不會是代碼味道嗎?
我應該在構造函數中做一些額外的工作並訂閱視圖的事件嗎?
我不明白;爲什麼不再在'演示者的構造函數'中? –
我的確有點像這樣實現。我將視圖實際上注入到了演示者中,並在構造函數中訂閱了所有視圖的事件。 –
使用演示者的「開始」和「停止」方法告訴它何時訂閱/取消訂閱視圖上的事件。讓更高級別的組件負責告訴主持人何時開始和停止。 – prprcupofcoffee