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

问题描述 投票:1回答:1

有没有办法强制类在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() {
    }
}

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

谢谢。

typescript design-patterns singleton
1个回答
0
投票

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

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

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


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

© www.soinside.com 2019 - 2024. All rights reserved.