我有以下两个扩展 ExtJs Grid 面板的类:
- ReadonlyDataGrid - 顾名思义,基本的不可编辑的 ExtJs 网格
- EditableDataGrid - 带有单元格和行编辑插件的 ExtJs 网格
现在我想提供一个新类,它将基于开发人员在网格 JSON 配置中设置的属性扩展上述 2 个类之一
例如:
爪哇:
parentObj.put("gridType", "readonly");
JS:
Ext.define('Grid.view.GridFactory', {
extend: 'Grid.view.AbstractGridFactory',
alias: 'widget.gridfactory',
singleton: true,
create : function(model){
var grid;
switch(model.input.gridType)
{
case 'readonly':
grid = new Grid class extending the ReadonlyDataGrid class;
break;
case 'editable':
grid = new Grid class extending the EditableDataGrid class;
break;
}
return grid;
}
});
现在我必须创建两个单独的类文件来处理这个。
第一类:
Ext.define('Grid.view.EditableGrid',{
extend : 'Grid.view.EditableDataGrid',
.... //additional features
});
第 2 类:
Ext.define('Grid.view.ReadonlyGrid',{
extend : 'Grid.view.ReadOnlyDataGrid',
.... //additional features
});
- 如何将这 2 个类合并为 1 个?
- 如上所示,如何根据用户配置更改扩展属性或扩展正确的类?
- 设计明智什么是更好的?拥有 1 个类并在运行时更改超类或维护 2 个类但使用冗余/相同代码?