2010-05-11 59 views
1

我正在使用.NET 2.0 & C#開發WinForm Mdi應用程序。它將有一個主窗口和很多mdi窗口。我想我應該使用哪種設計模式來管理mdi窗口。因爲每個窗口只需要一個實例,所以如果窗口存在,我將在頂部顯示它,否則我將創建並顯示它。哪種設計模式可以管理windows?

注意: mdi窗口從主窗口的菜單打開或從另一個mdi窗口打開。一個例子非常好。

更新:菜單狀態取決於mdi窗口的狀態。例如:如果窗口'A'被打開 - >菜單'A' - >禁用。當窗口'A'關閉時 - >我將菜單'A'狀態更新爲已啓用。

謝謝。

回答

1

我不認爲你會發現一種模式來解決問題,但將是一種模式的合作。 Josh提供的鏈接很有趣。

基於GoF模式將是下面一個簡單的建議:

  • 使用命令模式來處理您的 菜單中單擊事件
  • 使用工廠模式來創建你的窗口。您可以自定義您的工廠 ,以便它只創建單個窗口的 實例,使用 從單例模式的方法
  • 使用Subject-Observer模式獲取菜單狀態。 MDI子窗口 將成爲主題,您需要使用 來構造代碼,以便 可以在您的 菜單控制器中嵌入觀察器邏輯。
+0

我在閱讀有關命令模式,它非常有用。它有助於將代碼集中在一個位置。謝謝。 – 2010-05-11 04:07:19

2

我建議的Martin Fowler's page on GUI Patterns.

你不會找到一個簡單的例子一個很好的細讀,但隨後問題又來了一套不保證一個快速解決方案。您需要花一些時間瞭解可用的不同UI設計模式,並根據您的應用程序做出明智的決定,選擇哪一種最適合您。

Martin Fowler的網站至少會爲您提供足夠的信息以開始您的旅程。您可以通過查看Jeremy Miller's series獲得特定的.Net示例來深入探索。

同樣,圍繞這兩個角落都不會有一個快速的解決方案,但是向行業領導者學習是值得的。