关注点分离

更差

视图控制器:

// ...
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 的引用发生变化或指示幸福的方法发生显着变化,则前一种方法需要更改每个使用引用的位置。

通过分离的关注点(后一个示例),视图提供了一种抽象的方式来修改其他类可能使用的幸福。查询和组件操作保存在一个位置(与视图定义本身一起!),并且对抽象方法的调用不需要更改。

虽然控制器可以允许查询视图层,但强烈建议将该行为抽象到视图上的方法中。通过这种方式,视图可以为其他类提供标准化的方式来影响它,并在视图结构发生变化时最小化或消除对其他类的更改。