Typescript代码的抽象和实现体系结构



我知道这可能是错误的,但我仍然需要你的帮助。谢谢

请问,关于代码的抽象和实现架构,您能说些什么?

我需要想法。谢谢

export interface IDataService<T> {
getAll(): Promise<DocumentType<T>[]>;
}
export interface IServiceRequestService extends IDataService<IServiceRequest> {
}
export class ServiveRequestService implements IServiceRequestService {
private readonly ServiveRequestModel: DistanceModelType
constructor() {
this.ServiveRequestModel = getModelForClass(ServiveRequest);
}
public getAll(): Promise<DocumentType<IServiceRequest>[] {
return this.ServiveRequestModel.find();

}
}

ServiveRequestServiceclass,这意味着您可以通过调用new来创建它的许多实例。这些实例之间有什么区别?没有,这表明ServiveRequestService应该是其他类的实例,而不是它自己的类。

我们可以制作一个泛型类DataService<T>,它将特定模型作为其构造函数中的参数("依赖注入"(。这消除了对外部getModelForClass功能的依赖。一般来说,类应该封装自己的逻辑,所以依赖外部方法不是一个好的设计。

export interface IDataService<T> {
getAll(): Promise<DocumentType<T>[]>;
}
export class DataService<T> implements IDataService<T> {
private readonly model: Model<T>;
constructor(model: Model<T>) {
this.model = model;
}
public getAll(): Promise<DocumentType<T>[]> {
return this.model.find();
}
}
const ServiveRequestService = new DataService(ServiveRequestModel);
const all = ServiveRequestService.getAll();

如果ServiveRequestModel具有正确的类型(Model<IServiceRequest>(,则将自动推断出通用T,并且all将具有类型Promise<DocumentType<IServiceRequest>[]>

游乐场链接

最新更新