我想要一个单例类并公开它的一些方法,它们直接在实例上工作。代码下面是一个好的模式吗?
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方法。
编辑:我想使用单身模式,这是肯定的。我的问题是这种模式是否全局公开实例方法是好的。
答案 0 :(得分:1)
自己比较这两个电话:
Singleton::publicMethodOne();
Singleton::get().publicMethodOne();
您只需将调用Singleton::get
置于此静态方法中。这样做没有多大意义。它只会使代码膨胀。