effective in situations where the cost of initializing a class instance is high, the rate of instantiation of a class is high, and the number of instantiations in use at any one time is low.
Otherwise known as resource pools
Used manage object caching
Pool class designed as a singleton class