关注点分离
更差
视图控制器:
// ...
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
的引用发生变化或指示幸福的方法发生显着变化,则前一种方法需要更改每个使用引用的位置。
通过分离的关注点(后一个示例),视图提供了一种抽象的方式来修改其他类可能使用的幸福。查询和组件操作保存在一个位置(与视图定义本身一起!),并且对抽象方法的调用不需要更改。
虽然控制器可以允许查询视图层,但强烈建议将该行为抽象到视图上的方法中。通过这种方式,视图可以为其他类提供标准化的方式来影响它,并在视图结构发生变化时最小化或消除对其他类的更改。