我希望开发一个应用程序,它具有图形用户界面,并可以使用不同的小部件工具包进行开发。例如,我想为同一应用程序使用Qt、GTK+或甚至ncurses作为用户界面的构建块。此外,用户可以在下次启动应用程序时选择使用哪个GUI实现,而无需先重新编译它。我想知道在实现这个设计中可能使用了哪些设计策略和设计模式?
用于多个 GUI 的经典设计模式是 MVC。
你有一个模型(应用程序数据和规则),控制器(每个视图一个)- 这些控制 UI 交互并在 UI(视图)和模型之间进行中介。
您可以让不同的视图与控制器对话 - 一个视图可以是 Qt,另一个可以是 GTK+ 或甚至是控制台应用程序。
你为什么想要那个?
每个工具包都有自己的优点和缺点。如果你想设计一个能够与它们所有工作的东西,你将受到所有缺点的累积限制,并且得不到任何优点。
例如,如果你正在使用Qt,那么你将无法使用QT的信号和插槽。这将使编写GUI和与之交互非常痛苦。你基本上需要在已经是包装器层的东西周围编写整个包装器层(到本机API)。
我看不出用户为什么会关心选择Qt或GTK+或ncourses之间的区别。只需选择一件事并坚持下去。