2011-06-03 229 views
1

我問了這個問題以獲得關於膠水代碼的一些意見。編寫膠水代碼的最佳做法

例如,假設你有一個類(僞):

class MyClass 
    int attribute a 
    string attribute b 

,並代表該數據模型,你有兩個滑塊和一個文本框來表示,和一個文本框和說。 ..代表的窗口標籤b。

顯然,當這些視圖對象之一被改變時,你想要更新其他視圖對象。但是,更新整個視圖顯然效率不高。

method onSomethingHappened(uiObject) 
    model.appropriateAttribute = uiObject.value 

問題是,您對接下來要做什麼有什麼看法?如果模型對象實現當值已更改通知的偵聽器回調,允許一個寫膠水代碼,如:

method modelChangedCallback(model, attribute) 
    uiObject1.value = model.a 
    uiObject2.value = model.a 

下,您可能檢查該改變的是,並作出相應的反應的屬性是什麼?這是Objective-C和Mac上Cocoa的模型。

或者,您是否有責任完全在膠水代碼中?

method onSomethingHappened(uiObject) 
    model.appropriateAttribute = uiObject.value 
    self.updateForAttribute("appropriateAttribute") 

當您的項目變大時,這兩種方法都可能變得非常多毛(就像膠水代碼的問題)。也許還有其他的方法。你怎麼看?

感謝您的任何意見!

回答

0

對我來說,我認爲這歸結於需要行爲的地方。在你描述的情況下,你將多個控件綁定到一個屬性的事實是推動這個需求的原因,因此向模型中添加代碼以支持它是沒有意義的。

在基於網絡的模型中,我可能會把邏輯放在網頁上,因爲使用Javascript可以很便宜地完成。如果我沒有這種奢侈品(即我正在處理「愚蠢」的觀點),那麼在控制器或模型膠水代碼中執行它可能是有意義的。如果這種事情變得很普遍,那麼我可以創建一些通用的幫助器來減少我需要處理的代碼量。