如何设计程序,以便GUI和程序逻辑分离

时间:2010-08-31 16:59:18

标签: c gtk decoupling

我开始使用GTK +创建我的第一个C程序。我已经在一定程度上学习了C,并且我和PyGTK合作过,所以我对两者都有了不错的理解。但是,我从来没有使用C创建GUI程序。虽然它有效但我的上一个GUI程序有点混乱,因为程序逻辑全部与GUI内容混合在一起。我已经读过,最好以分离的方式编写GUI和程序逻辑,这样如果你切换GUI库,它就会很轻松。

这是对的吗?假设我在视觉列表中添加了一个项目。我是否有一个函数将项添加到逻辑列表中并在查看该列表的函数中运行该函数然后更新gui?

例如,

void new_item_button_handler()
{
  add_item_to_array() /* Code dealing with program logic*/
  /*
   * Code here to look at array and update visual list using GUI commands
   */
}

这样做的一般过程是什么?

任何建议都将不胜感激!

修改

感谢有关MVC的建议。您能否在我给出的例子的背景下解释一下?有关MVC的很多信息,我很难在这里弄清楚它是如何应用于我的代码示例的。

2 个答案:

答案 0 :(得分:2)

我认为你正在寻找Model-View-Controller设计模式。

答案 1 :(得分:2)

传统上这是用MVC模式解决的。但是,如果您没有自律,您将看到业务逻辑蔓延到您的视图层。

尽可能地设计您的包结构,以便一切都适合模型,视图和控制器包。确保您已经很好地定义了用于在包之间共享数据的接口。尽一切努力设计包装,使每个包装都可以测试并且大部分可以使用而不依赖于其他包装。

我还鼓励你看看IOC模式。将所有包连接在一起时,这将有所帮助。在测试期间,当你需要模拟一些存根类来独立测试1个包时,它也会有所帮助2. IOC是你应用程序的“连线”,它可以让你混合和匹配对象。