是否有任何方法可以强制类在typescript中实现单例模式。 如果是这样,我怎么做到这一点?
所以这是我的界面,我希望每个实现它的类都被强制实现单例
export interface IObservable { } // marker
export interface ICorporationWebsitesService extends IObservable{
readonly Instance: ICorporationWebsitesService;
}
export class CorporationWebsitesService implements ICorporationWebsitesService {
private _instance: ICorporationWebsitesService;
public get Instance(): ICorporationWebsitesService {
if (this._instance === null) {
this._instance = new CorporationWebsitesService();
}
return this._instance;
}
private constructor() {
}
}
当然,我必须自己添加私有构造函数,但如果其他人想要实现此接口,则不需要他/她,或者注意到构造函数应该是私有的。
谢谢。
答案 0 :(得分:0)
接口无法实现Singleton模式。实际上,界面根本无法实现任何内容 ......
根据定义,单例模式涉及确保只存在给定类的单个实例。相反,接口本身不是类声明,而是描述给定类必须提供的属性才能实现接口。
该类如何实现这一点 NOT 一定是接口的关注点。 TypeScript语言中没有规定(我也不确定,任何其他语言)允许接口限制它的实现方式。
认识到这个答案虽然准确,但可能无法解决你试图直接解决的问题,也许我可以建议你考虑一个新问题,为你想要实现的更大范围提供更广泛的范围。