如何设计可以使用多个GUI库的应用程序?

时间:2014-10-10 15:07:40

标签: design-patterns dynamic

我面临以下设计问题:假设一个应用程序有两个主要部分,一个用于通信(COM),另一个用于用户界面(UI)。两者都是不同的库到不同的文件。现在,我想保持UI模块化,以便将来能够使用不同的库(即GTK,Qt,WinForms等)更新它。 问题是:COM与设备的接口,它可能在时间上不同,并且必须在应用程序设置窗体/窗口中显示配置视图。由于每个新的COM实现可能因不同的配置数据而不同,因此每个更改都必须反映到设置窗体/窗口中。

如何保持我的应用程序模块化,而不是每次新的COM实现都被迫重新设计整个UI?

我想过动态加载COM库和设置库。最后一个将直接依赖于当前的COM实现,与其自己的配置数据连接。 如果我改变COM实现,我只需要重新实现Settings库,让框架在运行时用COM加载它。

这个解决方案对我来说有点棘手。你还有其他建议吗?

谢谢你的建议。

2 个答案:

答案 0 :(得分:1)

我建议使用MVC的变体。在您的界面和后端创建抽象,以便您可以实现核心功能并覆盖每个设备的特定详细信息。这将允许您重用所有情况中常见的接口和后端部分,并根据所连接的设备仅更改一部分。与此同时,您的UI与后端分离。

答案 1 :(得分:1)

除了@Floegipoky的答案,我认为你会发现Martin Fowler的帮助Separated Presentation。 MVC的核心,以及对后来的框架影响最大的想法,已经是上面提到的分离演示文稿。它背后的想法是在模拟我们对现实世界的感知的域对象和我们在屏幕上看到的GUI元素的表示对象之间进行清晰的划分。域对象应该是完全独立的,并且在不参考演示文稿的情况下工作,它们也应该能够同时支持多个演示。这种方法也是Unix文化的重要组成部分,并且今天仍在继续,允许通过图形界面和命令行界面操作许多应用程序。