1

我想为我的库使用对象池设计模式,这样用户就不能创建超过预定义数量的对象。
如何强制用户使用 Pool 类来获取实例,而不是资源的构造函数?

我不能将资源构造函数声明为私有,因为这样池类也无法创建实例......

谢谢

4

2 回答 2

0

使用组合和保存集合的类。IOW,你给他们一个围绕集合的包装类型,它可以调整可见性并处理对象创建。

如果您真的想进一步限制资源创建,您可以使用这种方法在没有友谊的情况下进行绑定(看过 c++/friend 评论):

class t_resource {
private:
    t_resource();
public:
    ~t_resource();

    static void AddToResourcePool(t_resource_pool& resourcePool) {
        if (resourcePool.isFull()) {
            /* error */
        }
        else {
            resourcePool.addResource(new t_resource);
        }
    }
};
于 2011-10-18T07:26:07.570 回答
0

池不需要类本身分开,或者类可以组合在一个池中,等等。

实例将从对象的(自包含的)池中检索,就像一个单例,但是一个多少你想要的 eton。

您也可以玩具有可见性的游戏,但如何做到这一点取决于语言和 IMO,可能不值得付出努力——使用类似单例的模式,但有n 个对象,而不是一个。

于 2011-10-18T07:28:53.397 回答