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

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

谢谢

有帮助吗?

解决方案

使用构图和包含集合的类。 IOW,您为他们提供包装类型,可调节可见性并处理对象创建。

如果您真的想进一步限制资源创建,则可以使用这种方法(看到C ++/朋友评论)就可以束缚而无需友谊:

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);
        }
    }
};

其他提示

游泳池没有 需要 要与班级本身分开,或者类可以在池中复合,等等。

实例将从对象(独立的)池中检索,就像单身人士一样,但有一个众多的want-eeton。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top