如果我在我的應用程序中需要兩種模式,我會使用哪種設計模式,以便防止醜陋的條件代碼?應用程序目前是MVC,但我不想在我的控制器中使用條件代碼,除非必須,否則不要爲每個視圖使用兩個控制器。什麼設計模式?我在我的應用程序中需要兩種模式,編輯和查看
有什麼建議嗎?
如果我在我的應用程序中需要兩種模式,我會使用哪種設計模式,以便防止醜陋的條件代碼?應用程序目前是MVC,但我不想在我的控制器中使用條件代碼,除非必須,否則不要爲每個視圖使用兩個控制器。什麼設計模式?我在我的應用程序中需要兩種模式,編輯和查看
有什麼建議嗎?
每個實現的不同子類,在共同的超類中使用共享的功能或使用Template Method pattern。
很難說沒有更多的信息,但我會建議戰略模式。您可以使用相同的控制器,只需更換策略對象即可產生所需的行爲更改。
這裏是你可能會發現有用的文章: http://www.javaworld.com/javaworld/jw-04-2002/jw-0426-designpatterns.html
Abstract Factory,或Proxy。您的控制器將包含某種Factory或Proxy實例,用於檢索「模式」並相應地對其執行操作。
也許是State Pattern?
看看JSR-168,Java portlet及其參考實現,它應該與您試圖實現的類似。
這種決定的適當位置是MVC的控制器。我建議你先寫在那裏。如果它真的是重複性的,那麼可以直截了當地弄清楚如何清理它:可以將條件邏輯移動到基類中,或者根據語言,可以使用某種過濾器來處理它。您也可以爲視圖創建一些「工廠」,這可以理解應用程序的「模式」。但是,從架構上來說,所有這些都在控制器中。
你是對的不想在視圖中。這會非常混亂。您可能需要兩個版本的視圖,一個用於「視圖」,另一個用於「編輯」。
最後,這是控制器的用途。祝你好運!
在CafeTownsend使用PureMVC進行的演示中,也存在類似的情況,其中存在兩個不同的視圖和兩個獨立的介體。你絕對不需要條件代碼。我不知道您使用的是什麼技術和編程語言,但在Flex中,它將作爲ListView和EditView作爲子項的ViewStack:
當視圖創建時,相應的介體按需註冊。您可以使用以前的鏈接檢查其他實現。
你能解釋一下「兩種模式」是什麼意思嗎? – 2009-09-17 03:22:11
你不想在你的控制器中使用條件代碼?你會把它放在哪裏?有條件的代碼是你生活的一部分,習慣於改善它,而不是避免它:) – JoshJordan 2009-09-17 03:22:56
更多細節,請! – TrueWill 2009-09-17 03:24:04