2014-10-10 66 views
1

我正面臨以下設計問題:設想一個應用程序有兩個主要部分,一個用於通信(COM)和一個用於用戶界面(UI)。兩者都是不同的庫到不同的文件。現在,我想保持UI模塊化,以便將來能夠使用不同的庫(即GTK,Qt,WinForms等)進行更新。 問題是:與設備的COM接口(可能在不同的時間),並且它必須在應用程序設置窗體/窗口中顯示配置視圖。由於每個新的COM實現可能會因不同的配置數據而不同,因此每個更改都必須反映到設置窗體/窗口中。如何設計一個可以使用多個GUI庫的應用程序?

我該如何保持我的應用程序模塊化,而不必被迫在每個新的COM實現中重新設計整個UI?

我想動態加載一個COM庫和一個設置庫。最後一個將直接取決於當前的COM實現,並與其自己的配置數據進行交互。 如果我更改COM實現,我只需重新實現設置庫,並讓該框架在運行時使用COM加載它。

這個解決方案對我來說有點棘手。你有其他建議嗎?

謝謝你的建議。

回答

1

我會建議去與MVC的變化。在界面和後端創建抽象,以便您可以實現核心功能並覆蓋每個設備的特定細節。這將允許您重複使用界面和後端中在所有情況下都很常見的部分,並根據連接的設備更改一部分內容。同時,您的用戶界面與您的後端分離。

+0

您是否建議將配置表單/窗口保存到UI實現中,還是保存到另一個模塊中,該模塊直接取決於COM模塊? – sawk 2014-10-11 08:02:08

+0

@sawk使用UI實現保持UI部分,並將後端功能與後端的其餘部分分開。這樣您就可以在將來更改UI實現,而不必更改任何業務邏輯。 – Floegipoky 2014-10-14 02:41:18

+0

謝謝。實際上我已經移除了動態加載部分,這聽起來有點過分殺死,並且使項目有點過於複雜。創建一個通用配置對象可以包含未來實現的所有內容,這聽起來也是一種矯枉過正。然後我直接讓UI依賴於Core和COM實現。 – sawk 2014-10-14 08:28:26

1

除了@Floegipoky答案,我認爲你會發現由馬丁福勒幫助Separated Presentation。 MVC的核心,以及對後來的框架影響最大的想法,已經在上面提到了分離式演示。它背後的想法是明確劃分我們對真實世界感知的領域對象,以及我們在屏幕上看到的GUI元素的呈現對象。域對象應該是完全獨立的,不需要參考演示文稿,它們也應該能夠支持多個演示文稿,可能同時進行。這種方法也是Unix文化的一個重要組成部分,並且今天繼續允許通過圖形界面和命令行界面操作許多應用程序。

相關問題