關注點分離

更差

檢視控制器:

// ...
myMethod: function () {
    this.getView().lookup('myhappyfield').setValue(100);
}
//...

檢視:

//...
items: [
    {
        xtype: 'textfield',
        reference: 'myhappyfield'
    }
]
//...

更好

檢視控制器:

// ...
myMethod: function () {
    this.getView().setHappiness(100);
}
//...

檢視:

//...
items: [
    {
        xtype: 'textfield',
        reference: 'myhappyfield'
    }
],
setHappiness: function (happiness) {
    this.lookup('myhappyfield').setValue(happiness);
}
//...

說明

在此示例中,兩個程式碼片段執行相同的任務。但是,如果對 myhappyfield 的引用發生變化或指示幸福的方法發生顯著變化,則前一種方法需要更改每個使用引用的位置。

通過分離的關注點(後一個示例),檢視提供了一種抽象的方式來修改其他類可能使用的幸福。查詢和元件操作儲存在一個位置(與檢視定義本身一起!),並且對抽象方法的呼叫不需要更改。

雖然控制器可以允許查詢檢視層,但強烈建議將該行為抽象到檢視上的方法中。通過這種方式,檢視可以為其他類提供標準化的方式來影響它,並在檢視結構發生變化時最小化或消除對其他類的更改。