2014-10-10 54 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文化的一个重要组成部分,并且今天继续允许通过图形界面和命令行界面操作许多应用程序。

相关问题