Recycling objects with an object pool
Sometimes, the creation of objects may be so complex that it can affect the application performance. Consider, for example, when the creation of an object requires a call across the network to a remote API or when the object's setup need expensive computational resources. Also, the frequent creation and destruction of objects may affect the overall performance, since the garbage collector is frequently involved.
In these situations, it would be better to extend the object's life as much as possible. In other words, we may maintain an object alive instead of discarding it when a client no longer needs it. Here, we can use the object pool pattern.
The object pool pattern involves the following actors:
A client: This is the object that needs another object
An object pool: This is the component responsible for managing a set of reusable objects
A reusable object: This is the object required by the client
In simple terms, the object pool pattern allows to retain...