什么是 "free object"?

What is a "free object"?

来源:https://refactoring.guru/design-patterns/factory-method

我想知道以下上下文中“自由对象”的确切定义是什么,以及自由对象的一般含义。

上下文

当您想通过重用现有对象而不是每次都重建它们来节省系统资源时,请使用工厂方法。

在处理大型资源密集型对象(如数据库连接、文件系统和网络资源)时,您经常会遇到这种需求。

让我们考虑一下要重用现有对象必须做什么:

  1. 首先,您需要创建一些存储来跟踪所有已创建的对象。 当有人请求一个对象时,程序应该在该池中寻找一个 空闲对象 。 …然后 return 它到客户端代码。 如果没有 个空闲对象, 程序应该创建一个新对象(并将其添加到池中)。 那是很多代码!而且它必须全部放在一个地方,这样你就不会用重复的代码污染程序。

空闲对象是用户返回到池中的对象或位于池内的对象。

什么是矿池?

正如 wiki 所说 pool:

In computer science, a pool is a collection of resources that are kept[clarification needed] ready to use, rather than acquired on use and released[clarification needed] afterwards. In this context, resources can refer to system resources such as file handles, which are external to a process, or internal resources such as objects. A pool client requests a resource from the pool and performs desired operations on the returned resource. When the client finishes its use of the resource, it is returned to the pool rather than released and lost.

您可以在此处查看 source code of ObjectPool<T> of .NET Core 的示例