我有一个包含长代码的类,现在我想将代码组织成单独的文件。
我有两个想法,使用Mixin和使用静态方法。
例如,
class myController {
routeSubView(type: SubViewType, params: any) {
swtich(type) {
case SubViewType.A:
this._showA(params);
break;
case SubViewType.B:
this._showB(params);
break;
case SubViewType.C:
this._showC(params);
break;
case SubViewType.D:
this._showD(params);
break;
// ... a lot more
}
}
private _showA() {
// initialize view and render
}
private _showB() {
// initialize view and render
}
private _showC() {
// initialize view and render
}
private _showD() {
// initialize view and render
}
// ... a lot more
}#idea1 1)将生成子视图代码移动到静态类
### sub_views.ts
class SubViews {
static showA(params: any) {
// initialize view and render
}
static showB(params: any) {
// initialize view and render
}
}
### my_controller.ts
import { SubViews } from './sub_views';
class myController {
routeSubView(type: SubViewType, params: any) {
swtich(type) {
case SubViewType.A:
SubViews::showA();
break;
case SubViewType.B:
SubViews::showB();
break;
case SubViewType.C:
SubViews::showC();
break;
case SubViewType.D:
SubViews::showD();
break;
// ... a lot more
}
}
}#idea2 2)使用Mixin
### mixin.ts
export interface ISubviews {
_showA(params: any): any;
_showB(params: any): any;
_showC(params: any): any;
_showD(params: any): any;
}
export function _showA(param: any){
// initialize view and render
}
export function _showB(param: any){
// initialize view and render
}
export function _showC(param: any){
// initialize view and render
}
export function _showD(param: any){
// initialize view and render
}
### my_controller.ts
import * as { Mixin } from './mixin';
class myController implement Mixin.ISubviews {
_showA(params: any): any;
_showB(params: any): any;
_showC(params: any): any;
_showD(params: any): any;
/// ...
}
Cocktail.mixin(myController, Mixin);哪个更好?或者其他更好的主意?请给我建议。
发布于 2016-08-31 07:16:51
Javascript和类型记录是原型语言,这意味着它们将更经典的OO模型分为嵌入、委托和创建。这允许您表达某些在经典模型中不存在的强大概念。您的第一个示例更类似于经典OO中的解决方案,在这种情况下,您更喜欢组合而不是继承。
在原型语言中,组合仍然比继承更好,但是您可以更直接地表达它,例如通过混合(嵌入概念)。我认为你应该总是喜欢混合而不是成员组成。
如果您想深入研究这些概念,请查看艾略特谈三种类型的原型继承,如果您想深入研究,请查看卢卡·卡德利的物象理论。
https://stackoverflow.com/questions/39242725
复制相似问题