Typescript:强制类来实现单例模式

时间:2018-02-28 11:54:07

标签: typescript design-patterns singleton

是否有任何方法可以强制类在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() {
    }
}

当然,我必须自己添加私有构造函数,但如果其他人想要实现此接口,则不需要他/她,或者注意到构造函数应该是私有的。

谢谢。

1 个答案:

答案 0 :(得分:0)

接口无法实现Singleton模式。实际上,界面根本无法实现任何内容 ......

根据定义,单例模式涉及确保只存在给定的单个实例。相反,接口本身不是类声明,而是描述给定类必须提供的属性才能实现接口。

该类如何实现这一点 NOT 一定是接口的关注点。 TypeScript语言中没有规定(我也不确定,任何其他语言)允许接口限制它的实现方式。

认识到这个答案虽然准确,但可能无法解决你试图直接解决的问题,也许我可以建议你考虑一个新问题,为你想要实现的更大范围提供更广泛的范围。