2010-08-31 95 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是應用程序的「接線」,它允許您混合和匹配對象。