题
我想为我的库使用对象池设计模式,以便用户不能创建超过预定义的对象。
我如何强迫用户使用池类来获取实例,而不是资源的构造函数?
我无法声明资源构造函数私有,因为那样的池类将无法创建实例...
谢谢
解决方案
使用构图和包含集合的类。 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 对象,而不是一个。
不隶属于 StackOverflow