關注點分離
更差
檢視控制器:
// ...
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
的引用發生變化或指示幸福的方法發生顯著變化,則前一種方法需要更改每個使用引用的位置。
通過分離的關注點(後一個示例),檢視提供了一種抽象的方式來修改其他類可能使用的幸福。查詢和元件操作儲存在一個位置(與檢視定義本身一起!),並且對抽象方法的呼叫不需要更改。
雖然控制器可以允許查詢檢視層,但強烈建議將該行為抽象到檢視上的方法中。通過這種方式,檢視可以為其他類提供標準化的方式來影響它,並在檢視結構發生變化時最小化或消除對其他類的更改。