代码之家  ›  专栏  ›  技术社区  ›  Jookia

在C++中设计前端/后端系统?

  •  2
  • Jookia  · 技术社区  · 15 年前

    我正准备用C++编写一个程序,但我不知道该怎么做。我想创建一个可以与命令行前端一起使用的程序,但也可以与GUI前端一起使用,因为我不想为了依赖性而将用户绑定到特定的接口,例如小部件工具包。

    最好的方法是什么?我知道有些程序,比如rsync和ssh,在guis中有前端,但我不确定这是怎么做到的。拥有一个只使用system()来运行它的程序,同时拥有一个漂亮的图形用户界面,这难道不是很简单吗?

    4 回复  |  直到 14 年前
        1
  •  6
  •   Community Mohan Dere    9 年前

    您可以在 图书馆 ,小心地避免任何UI内容。算法的API在中指定 标头档 .

    然后,您可以编写几个使用这个库的应用程序,其中一个实现了GUI前端,另一个实现了命令行界面。它们包括头文件并根据API进行编译,您可以将库链接到它。
    注意不要用不一致的设置编译库和GUI。

    IME算法与用户界面的分离在第一次实现命令行用户界面时可以达到最好的效果。你可能不得不雇用 callbacks 为了分离。

        2
  •  6
  •   Oliver Charlesworth    15 年前

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

    更复杂的答案包括将后端设置为守护进程/服务器。

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

        3
  •  1
  •   David    15 年前

    您可以在MVC设计模式上激发自己的灵感。不同的前端是模型控制器上的视图。控制器可以是一个库,它将影响应用程序的常见任务。GUI部分和shell部分(或者其他语言集成部分)都使用这个“headless”库。从一开始就有明确的分离将有助于加强模块化和去耦。

        4
  •  0
  •   C.J.    15 年前

    您可以使用qt作为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不可知。还有人在这里提到了MVC模式。这是很好的建议。