将应用程序核心和gui分开编写的最佳实践? [关闭]
Posted
技术标签:
【中文标题】将应用程序核心和gui分开编写的最佳实践? [关闭]【英文标题】:Best practice to write application core and gui separated? [closed] 【发布时间】:2015-08-21 15:12:36 【问题描述】:对不起,如果这听起来有点新鲜。我正在编写一个跨平台的应用程序来学习 C++,如果它运行良好,可以帮助人们。我希望它能够以两种方式使用:通过设计的 GUI(可能使用 QT),或者通过命令行为想要超越的专家用户使用。
我想知道应该如何在 GUI 应用程序和核心之间进行通信,因为这将是开源的,我希望代码美观整洁。
有没有普遍接受的方法来做到这一点?
【问题讨论】:
我让很多 GUI 应用程序接受命令行参数。我在我的 QApplcication 类中处理这些。如果不需要显示 GUI,我不会调用它或使用 app.exec()。虽然在其他应用程序中我使用相同的基础库但不包含 GUI。 要获得您的问题的答案,您必须阅读一些书籍。例如:stevemcconnell.com/books.htmerdani.com/index.php/books 【参考方案1】:您可以采用几种方法。
首先编写 CLI,然后将 GUI 编写为独立程序,该程序为所有处理(通过 system()、popen()、fork()、g_spawn()、CreateProcess() 或类似的电话)。这可能比编写库要繁琐一些,但如果您已经编写了 CLI,或者在批处理等情况下,GUI 只是您选择参数的一种奇特形式,则效果很好。
李>不是将应用程序分成两部分,而是三部分:库、GUI 和 CLI。该库将包含 GUI 和 CLI 之间的所有共享逻辑,例如处理输入格式、编辑操作等。 GUI 部分将使用库中的函数实现图形界面,而 CLI 将使用相同的库实现命令行界面。
使 GUI 应用程序接受命令行参数,如果传递的参数表明它是在 CLI 模式下调用的,则避免初始化小部件库。这对于需要公开一些脚本操作的主要图形应用程序(例如位图编辑器或编程 IDE)来说是可以的。请注意,要在 Windows 上进行这项工作,需要进行一些额外的黑客攻击,请参阅this answer。另请注意,这将使应用程序在没有窗口系统的服务器上运行变得更加困难,因为它仍将链接有 GUI 库。
【讨论】:
非常感谢,这真的很有帮助。顺便说一句,我有一个疑问,你有一个答案,你帮助了我和未来的观众。真的不明白反对意见。以上是关于将应用程序核心和gui分开编写的最佳实践? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章