2011-12-21 124 views
0

在我的應用程序是在c + +我使用MVC模式。我有很多模型對象,以及一系列可以從UI使用它們的動作。但是,行動只能做,如果某些條件得到滿足:MVC控制器啓用禁用控件

  • 我不能表現對象A是否顯示或objectC顯示對象B,
  • 並不能對對象A的任何行動,如果它不是顯示
  • 其他更復雜的條件

所以我想有類,如果特定類的對象有目前有效的行動,這將驗證:

控制器類會詢問這個ActionValidators如果某個操作在特定時刻是可用的,並且如果是,他們將執行操作。

關注點1: 但是,當某些操作變爲可用/不可用時,如何自動禁用/啓用ui控件?我猜這些ActionValidators類應該也會在發生這種情況時發出一些事件?但後來我的UI控件應該連接到一羣不同ActionValidator類

關注點2的事件: 也許最好是有一個全局ApplicationActionManager類發出的事件,並將有關整個應用程序的所有對象的有效措施的信息?但是恐怕它最終會成爲一個很大的非連貫的類

關注點3: 當ObjectA顯示時,控制器還可以將顯示按鈕設置爲禁用並啓用隱藏按鈕,因爲這很簡單,但是這是控制器更新控制狀態的工作嗎?或者我應該發出顯示/隱藏狀態作爲事件嗎?

任何見解如何做到這一點。謝謝

回答

0

我不確定我完全理解你在這裏得到什麼,但我會嘗試提供一些指針,以前曾經用MVC框架做過類似的事情。

我通常在模型中實現驗證(雖然這並不是說這是正確的!)。任何可能會改變對象有效性的操作都需要在設置對象屬性後調用控制器的驗證功能,然後更新視圖。

在對象級別上使用純虛擬基類很有用。例如,有一個CanDoAction()純虛函數,所有對象都必須實現,然後objectA可以返回false,如果它不可見。然後,您可以使用模型驗證功能來實現對象之間的依賴關係,這應該爲您提供一種分層驗證過程。

我希望能有某種意義。

相關問題