【问题标题】:Designing a frontend/backend system in C++?用 C++ 设计前端/后端系统?
【发布时间】:2010-08-23 16:03:33
【问题描述】:

我即将用 C++ 编写一个程序,但我不确定如何去做。我想创建一个可以与命令行前端和 GUI 前端一起使用的程序,因为我不想为了依赖而将用户绑定到特定的界面,例如小部件工具包。

最好的方法是什么?我知道 RSync 和 SSH 等一些程序在 GUI 中有前端,但我不确定这是如何完成的。拥有一个只使用 system() 来运行它同时拥有漂亮 GUI 的程序不是很糟糕吗?

【问题讨论】:

    标签: c++ user-interface frontend backend


    【解决方案1】:

    您在库中实现程序的算法,小心避免使用任何 UI 内容。您的算法的 API 在头文件中指定。

    然后您可以编写几个使用这个库的应用程序,一个实现 GUI 前端,一个实现命令行界面。它们包含标头并针对 API 进行编译,然后您将库链接到它。
    注意不要以不一致的设置编译库和 GUI。

    当您第一次实现命令行 UI 时,IME 可以最好地实现算法与 UI 的分离。您可能必须使用callbacks 进行分离。

    【讨论】:

      【解决方案2】:

      在不知道任何其他要求的情况下,最简单的答案就是将您的“后端”编译为库,然后将您的各种“前端”链接到它。

      更复杂的答案涉及将您的后端设置为守护程序/服务器。

      您不需要系统调用来执行任何这些操作(除非您有非常具体的要求)。

      【讨论】:

        【解决方案3】:

        您可以通过 MVC 设计模式激发自己。不同的前端是模型控制器上的视图。控制器可以是一个库,它将考虑您的应用程序的常见任务。 GUI 部分和 shell 部分(或例如其他语言集成部分)都使用这个“无头”库。从一开始就明确分离将有助于实施模块化和解耦。

        【讨论】:

        • MVC不是views来查看model的数据吗?
        • @sbi,你说得对,我的回答不够准确,我会编辑我的答案。
        【解决方案4】:

        您可以将 QT 用于 GUI 前端。但我实际上只是先写你的图书馆。然后最后做你的GUI。

        一些有用的建议

        1. 确保在编写代码的同时编写单元测试。

        2. 确保在编写代码时使用代码覆盖率工具来评估单元测试。

        3. 请务必避免使用 BOOL 类型,因为这些类型通常在平台 API(如 win32)中定义。使用 bool 代替。

        4. Forward 在头文件中声明尽可能多的类型。在每个库头文件中包含尽可能少的头文件。

        5. 尽可能少地暴露接口。

        6. 请务必遵循 C++ 的良好编码实践。 Herb Sutters Book C++ coding standards is excellent in this regard.

        7. 一旦您编写了您的 gui,请在您的 GUI 事件处理程序中尽可能少地放置业务逻辑。基本上,您希望您的库与您的 GUI 无关。其他人在这里提到了 MVC 模式。这是很好的建议。

        【讨论】:

          猜你喜欢
          • 2021-10-19
          • 2011-09-12
          • 2019-12-18
          • 2018-01-19
          • 2010-10-24
          • 2011-05-02
          • 2021-10-26
          • 2023-03-25
          • 1970-01-01
          相关资源
          最近更新 更多