2010-08-31 64 views
0

我开始用GTK +编写我的第一个C程序。我已经在一定程度上学习了C,并且已经与PyGTK合作过,所以我对这两者都有相当的理解。但是,我从来没有用C创建GUI程序。虽然它工作,但我的最后一个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

传统上这是用MVC模式解决的。然而,如果你没有遵守纪律,你会看到业务逻辑蔓延到你的视图层。

尽你所能地设计你的包装结构,以便所有东西都能够很好地嵌入模型,视图和控制器包中。确保你有良好的定义接口来共享包之间的数据。尽一切努力来设计包装的方式,每个单独的包将是可测试的,并且大多可用而不依赖于其他2.

我也鼓励你看看IOC模式。这将有助于将所有软件包连接在一起。它还将在测试过程中帮助您模拟一些存根类以独立于另一个测试1包。IOC是应用程序的“接线”,它允许您混合和匹配对象。