我想为我的库使用对象池设计模式,这样用户就无法创建超过预定数量的对象。
如何强制用户使用Pool类来获取实例,而不是资源的构造函数?
我无法将资源构造函数声明为私有,因为那么池类将无法创建实例...
谢谢
答案 0 :(得分:0)
使用合成和持有该集合的类。 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);
}
}
};
答案 1 :(得分:0)
池需要与类本身分开,或者类可以在池中合成等。
实例将从对象的(自包含)池中检索,就像单身人士一样,但是你想要的人多得多。
你也可以玩具有可见性的游戏,但是如何这样做取决于语言,IMO可能不值得努力 - 使用类似单身的模式,但使用 n 对象,而不是一个。