为什么设计模式里抽象工厂只负责创建而不负责资源管理?

抽象工厂只是实现了 CRUD 中的 C,我想实现这样的工厂:

/* C++ */

class abstract_factory
{
};

template<typename T>
class factory:public abstract_factory
{
public:
	std::weak_ptr<T> create();
	std::weak_ptr<T> retrieve(const std::uint64_t& product_id);
	void destroy(const std::uint64_t& product_id);

private:
	std::uint64_t increment_serial_id_ = 0;
	std::map<std::uint32_t, std::shared_ptr<T> products_;

	std::uint64_t generate_id();
};

这种写法直接包含了 CRUD,同时内部也持有了对象。我觉得这种写法明显比只有 create() 的抽象工厂更好啊。为什么很少有人写这种模式呢?

相关文章

4 thoughts on “为什么设计模式里抽象工厂只负责创建而不负责资源管理?

  1. @fyyz 我是说你都显式 destroy 了还要工厂管理什么资源?难道构建出来的实例自己不知道什么删除自己吗?

发表评论

电子邮件地址不会被公开。 必填项已用*标注