2012-08-13 84 views
0

我在傳統應用程序中添加了一些複雜的功能。它已經有了一個巨大的形式,有很多控件和選項卡以及cs文件背後的龐大代碼。我試圖避免創建一個巨大的視圖/演示者。爲表單的每個功能添加視圖(和演示者)是否是一種好的做法?有沒有更好的解決方案?由於用戶的要求,我無法將表單分成多種形式。MVP:一個複雜形式(winforms)的多個視圖/演示者?

帳票定義將看起來像這樣,

public partial class frmMyForm 
    : IView1, IView2, IView3, IView4, IView5, 
     IView6, IView7, IView8, IView9, IView10 
{ 
    .... 

每個IViewN是不同的特徵 - 例如,一個用於可視化數據改變的比較,一個是用於顯示在網格上的數據,一個用於彙總統計...


爲什麼這篇文章是關閉投票?評論你的理由。 如果你不知道MVP是什麼,請不要投票。

+0

我低估了,因爲我不確定你在問什麼。你能給出一個組和標籤的例子嗎?有沒有使用UserControls?你是否使用MVP的特定框架? – MrKWatkins 2012-08-14 15:54:53

+0

@MKKWatkins這是一個巨大的複雜形式,我試圖避免創建一個巨大的View/Presenter,正如問題的標題所描述的那樣。 – ca9163d9 2012-08-14 15:58:27

+0

你可以用View/Presenter將它分成UserControls嗎? – MrKWatkins 2012-08-14 16:03:54

回答

3

沒有什麼說在窗體,視圖和演示者之間存在一對一的關係。事實上,將表單的各個部分分解爲多個「視圖」是非常合理的事情(我通常使用用戶控件來看這一點;但它不一定要這樣),並且每個視圖都有一個演示者。這是最常見的形式是觀點;但是,這不是強制性的。正如你所說,這意味着要避免一些怪異的全能\全能的Presenter,這應該會導致更有凝聚力的代碼並減少單元測試的麻煩。

1

如果我理解正確,您正在使用遺留應用程序和現有屏幕。在這裏,你需要添加一些新功能。如果是這種情況,那麼添加必須有模型,演示者和查看可用於此屏幕已經。如果是這種情況,那麼如果新功能使View和Presenter變得龐大,則沒有其他選擇,只能繼續使用相同的體系結構。

但是,如果我錯了,並且您正在自己實現屏幕,那麼您可以使用他們自己的模型,演示者和視圖來引入用戶控件。但要確保你的用戶控件是彼此獨立的,它將再次成爲一個問題和混淆,以在用戶控件之間建立一個橋樑以在它們之間進行通信。

但說實話,即使文件變得很大,我也會更喜歡創建一個單獨的主持人並查看此任務。通常,用戶控件用於創建可在多個位置使用的通用控件。通過你的方法,如果你正在創建的用戶控件之間有很多的通信,你可能會去折騰。但是,是的,如果用戶控件是用一個偉大的計劃創建的,那麼這可以被緩解。但對我而言,除非他們處於緊密聯繫的狀態,否則只有一位主持人和觀點是首選。如果你有幫助像resharper這樣的插件,大文件不應該成爲問題。

+0

您是否認爲將一個整體視圖呈現爲一切,然後對所有功能進行用戶控制並使用整體視圖來實現它們是可行的? – 2012-08-27 20:51:09

+0

我想我建議製作一個View和Presenter。我只是在談論usercontrols,因爲OP不需要大文件....... – Sandy 2012-08-28 07:02:36

相關問題