繁体   English   中英

完美的单例设计模式

[英]perfect singleton design pattern

最近我遇到一个问题,设计完美的单色调图案。 我通过使用一个静态实例进行设计,并且一个静态函数按如下所示返回该实例。

ST* ST::instance = NULL;
ST* ST::getInstance()
{
    mutex.lock();

    if(!instance)
       instance  = new ST();

    mutex.lock();

    return instance ;
}

他让我写时不使用互斥锁(不使用任何同步机制编写完美的单例),然后我做了如下更改。

ST* ST::instance = new ST();
ST* ST::getInstance()
{
    return instance ;
}

这是一个完美的设计吗? 他对单色调图案的完美设计意味着什么? 他对设计的期望是什么?

提前致谢。

没有完美的单例。 实际上,是否存在任何值得任何价值的单身人士值得商question。

也就是说,在C ++中,Meyers Singleton通常是问题最少的一种。 它的核心大致如下所示:

static T &get_instance() { 
    static T t;
    return t;
}    

因此,基本思想是将目标类型的单个实例定义为静态的,静态的静态成员函数。 该静态成员函数返回对该对象的引用。 所有singleton的构造函数都是私有的,因此只有成员函数才能使用它们来创建(或销毁)该类的对象。 实际上,这意味着只有一个静态成员函数才能创建一个实例,并且它仅创建一个静态实例,因此所有使用都是该一个实例。

当然,如果您想做的足够糟糕,可以返回一个指针而不是引用,但这绝不是一个好主意(可能不是 “完美”的好候选者)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM