2010-04-19 77 views
1

在MVC和MVP以及類似模式中,經常出現「被動視圖」的方法,它儘可能地愚蠢(包含儘可能少的邏輯)。這應該有助於單元測試並創建更清晰的視圖和模型分離。被動視圖和顯示邏輯

我知道那些模式有不同的風格,尤其是MVP的理解似乎因文章而異。因此我的問題不是「我如何正確實現這種模式」。

我想改善視圖和模型分離,並尋求更好的應用程序可測試性。所以我想去消極的看法。但是我的問題是,你會在哪裏放置顯然只有視圖相關的邏輯?像文本查看器應該在滾動條移動時滾動文本。你會把這個邏輯放到Presenter中嗎? 假設textviewer具有一些擴展功能。就像在textpassages上設置標記一樣。這個邏輯很明顯可以放入Presenter中。但是,如果它與視圖的所有'直接'邏輯混合在一起(例如滾動文本),演示者可能變得非常大,這也不是一個很好的設計。

所以我的問題是在哪裏把被動視圖的顯示相關邏輯和什麼功能混合在Presenter中。

謝謝!

回答

0

如果需要在用戶滾動時從模型中獲取更多數據,我會將滾動條邏輯置於演示者中。即使不是,視圖也應該通知主持人。

有時GUI API自己處理滾動。如果是這種情況,那麼你所能做的就是通知演示者中的一個存根(它什麼都不做)。該觀點不知道主講者的重要性。

演示者不一定是一個單一的整體類。您最好將不同的對象聚合到不同的職責上。從測試的角度來看,這實際上很好,您可以在其中模擬出當前未測試的所有對象。

+0

是的,它其實就是這個。有一些優化只顯示可見部分。我現在想知道的是,我是否應該將其與其他更多交互相關的邏輯混合在一起,主持人 – genesys 2010-04-19 16:41:00

+0

它屬於主持人,但正如我所說:你應該處理不同類別中的不同顧慮。 – bitc 2010-04-19 17:23:59