如何改进代码并避免重复?
How to improve code and avoid duplications?
我有以下描述模型和发射器的代码:
export class Findbyobjectidlatest {
onChanged = new EventEmitter<Ifindbyobjectidlatest>();
model = <Ifindbyobjectidlatest>{ pagesize: 10 };
emit() {
this.onChanged.emit(this.model);
}
}
export class Findbycadnum {
onChanged = new EventEmitter<Ifindbycadnum>();
model = <Ifindbycadnum>{ pagesize: 10 };
emit() {
this.onChanged.emit(this.model);
}
}
export class Findbycadastnumber {
onChanged = new EventEmitter<Ifindbycadastnumber>();
model = <Ifindbycadastnumber>{ pagesize: 10 };
emit() {
this.onChanged.emit(this.model);
}
}
我该如何改进它,因为 class它们是相似的。
我也有存储库 class:
class RepositoryModel {
findbyobjectidlatest = new Findbyobjectidlatest();
findbycadnum = new Findbycadnum();
findbycadastnumber = new Findbycadastnumber();
}
那我就用它:
const repositoryModel = new RepositoryModel();
repositoryModel.findbyobjectidlatest.onChanged().pipe().subscribe();
等等
您可以使用具有通用类型的基础 class:
class BaseModelEmitter<T extends {pagesize: number}> {
onChanged = new EventEmitter<T>();
model = <T>{ pagesize: 10 };
emit() {
this.onChanged.emit(this.model);
}
}
然后让你的 classes 扩展....
export class Findbycadnum extends BaseModelEmitter<Ifindbycadnum> { }
任何 class 用于实现此基础的都必须实现该 pagesize 接口。
或者直接使用它并根据需要跳过扩展(但扩展允许自定义):
findbyobjectidlatest = new BaseModelEmitter<Ifindbycadnum>();
我有以下描述模型和发射器的代码:
export class Findbyobjectidlatest {
onChanged = new EventEmitter<Ifindbyobjectidlatest>();
model = <Ifindbyobjectidlatest>{ pagesize: 10 };
emit() {
this.onChanged.emit(this.model);
}
}
export class Findbycadnum {
onChanged = new EventEmitter<Ifindbycadnum>();
model = <Ifindbycadnum>{ pagesize: 10 };
emit() {
this.onChanged.emit(this.model);
}
}
export class Findbycadastnumber {
onChanged = new EventEmitter<Ifindbycadastnumber>();
model = <Ifindbycadastnumber>{ pagesize: 10 };
emit() {
this.onChanged.emit(this.model);
}
}
我该如何改进它,因为 class它们是相似的。
我也有存储库 class:
class RepositoryModel {
findbyobjectidlatest = new Findbyobjectidlatest();
findbycadnum = new Findbycadnum();
findbycadastnumber = new Findbycadastnumber();
}
那我就用它:
const repositoryModel = new RepositoryModel();
repositoryModel.findbyobjectidlatest.onChanged().pipe().subscribe();
等等
您可以使用具有通用类型的基础 class:
class BaseModelEmitter<T extends {pagesize: number}> {
onChanged = new EventEmitter<T>();
model = <T>{ pagesize: 10 };
emit() {
this.onChanged.emit(this.model);
}
}
然后让你的 classes 扩展....
export class Findbycadnum extends BaseModelEmitter<Ifindbycadnum> { }
任何 class 用于实现此基础的都必须实现该 pagesize 接口。
或者直接使用它并根据需要跳过扩展(但扩展允许自定义):
findbyobjectidlatest = new BaseModelEmitter<Ifindbycadnum>();