与朋友的游泳池建筑

时间:2015-04-18 09:24:36

标签: c++ architecture pool

我正在开发一个带有模板的Pool架构:

Pool.h

template<class T>
class Pool<T>
{
public:
    static T* Create()
    {
        ...
        return new T();
    }
...
}

TComponent.h

template<class T>
class TComponent
{
public:
    static T* Create()
    {
        return s_pool.Create();
    }
    ...
protected:
    TComponent();
    ~TComponent();
private:
    static Pool<T> s_pool;
}

ExampleComponent.h

class ExampleComponent : public TComponent<ExampleComponent>
{
    friend class Pool<ExampleComponent>;
    ...
protected:
    ExampleComponent();
    ~ExampleComponent();
    ...
}

所以我可以使用:

创建一个ExampleComponent
ExampleComponent* test = ExampleComponent::Create();

但是,对于我定义的每个子类,我不喜欢与Pool的朋友,但由于友谊不是继承的,所以我不能在父类中执行。

反正是否有保留受保护的构造函数而忽略它?或者,我可以使用更好的架构吗?

0 个答案:

没有答案