具有Singleton构建器模式的Singleton

时间:2013-12-13 21:03:39

标签: c++

我熟悉好的'Singleton模板模式并广泛使用它。它在大多数情况下效果很好但是,我遇到了一个案例,我有单例,需要一个相当复杂的构建操作来构造构成Singleton的对象图。

将构建操作放到单独的构建器类中很容易,但是我怎样才能创建一个将此构建器类作为参数的模板?例如,我可能有一个看起来像这样的Singleton:

class Foo {
public:
    Foo(Bar& bar, Spooge& spooge) :
      _bar(bar),
      _spooge(spooge) {}
    ~Foo() {}

    void doSomething();

private:
   Bar _bar;
   Spooge _spooge;
}

然后我们这样:

Singleton<Foo>::sharedInstance->doSomething();

但显然我不能用传统的Singleton模板做到这一点,因为它没有无参数构造函数。

假设我有一个名为FooBuilder的类,它有一个noargs构造函数,我怎么能创建一个允许我指定这个构建器类的Singleton模板?类似的东西:

Singleton<Foo, FooBuilder>::sharedInstance->doSomething();

BTW:假设传递给Foo构造函数的参数不是单例对象。它们可能是需要复杂构建操作的其他对象或其他非单例对象。

由于

0 个答案:

没有答案