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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Typescript:强制类来实现单例模式相关的知识,希望对你有一定的参考价值。

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

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

谢谢。

答案

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

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

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


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

以上是关于Typescript:强制类来实现单例模式的主要内容,如果未能解决你的问题,请参考以下文章

为什么用枚举类来实现单例模式越来越流行?

13-TypeScript单例模式

23种设计模式学习之单例模式

常见设计模式 (python代码实现)

静态内置类实现单例模式

如何对Java单例模式进行mock