Singleton和全局变量之间的差异

时间:2017-03-18 04:46:15

标签: c++ design-patterns

我知道单例只允许一个对象的实例。在单例中声明的每个方法只能在此对象上操作。 我想知道为什么不简单地声明一个将实现相同目标的全局对象?

我当然忘了什么。如果存在单身人士,必须有特定用途或帮助实现特定机制。

例如:

class Singleton
{
public:
    static Singleton& Instance()
    {
        static Singleton sg;
        return sg;
    }

    void function();
};

与:

相同
class NotSingleton
{
public:
    NotSingleon();
    ~NotSingleton()
    void function();
};
NotSingleton nsg;

但是,没有什么能阻止我使用多个NotSingleton 的实例

1 个答案:

答案 0 :(得分:3)

当我们不想创建多个对象时使用Singleton。 Singleton类确保创建的对象不超过一个。但是,拥有全局对象并不能确保这一点。

Class Singleton{
public static Singleton object==null;



  public void singleton(){
    if(object==null)
       object = new Singleton();
    return object;
    }

    }

此类不会创建多个对象。这是Singleton类的目的。