Design pattern, similar to the singleton, but allowing more than one instance of a class to be created