我熟悉好的'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构造函数的参数不是单例对象。它们可能是需要复杂构建操作的其他对象或其他非单例对象。
由于