这种C ++单例模式和方法暴露是一种好习惯吗?

时间:2014-08-23 18:30:39

标签: c++ design-patterns singleton

我想要一个单例类并公开它的一些方法,它们直接在实例上工作。代码下面是一个好的模式吗?

class Singleton
{
public:
    static Singleton& get()
    {
        // the easiest way to implement a singleton class

        static Singleton instance;

        return instance;
    }

    static void publicMethodOne()
    {
        // "redirecting" the call to the instance itself

        get().instancePublicMethodOne();
    }

    static void publicMethodTwo()
    {
        // "redirecting" the call to the instance itself

        get().instancePublicMethodTwo();
    }

private:
    Singleton() {}
    Singleton(const Singleton& s) {}
    Singleton& operator=(const Singleton& s) {}

    void instancePublicMethodOne()
    {
        // do stuff
    }

    void instancePublicMethodTwo()
    {
        // do stuff
    }

    void privateMethodOne()
    {
        // privately do stuff
    }
};


// call from outside
Singleton::publicMethodOne();

这基本上将每个静态和公共方法调用重定向到实例,并且每个静态和公共方法在实例中都有一个pair方法。

编辑:我想使用单身模式,这是肯定的。我的问题是这种模式是否全局公开实例方法是好的。

1 个答案:

答案 0 :(得分:1)

自己比较这两个电话:

Singleton::publicMethodOne();
Singleton::get().publicMethodOne();

您只需将调用Singleton::get置于此静态方法中。这样做没有多大意义。它只会使代码膨胀。