Sono piuttosto venduto sulla linea di pensiero "singletons is evil". Tuttavia, ci sono eventi limitati quando si desidera limitare la creazione di un oggetto. Roy Osherove consiglia,
If you're planning to use a singleton in your design, separate the logic of the singleton class and the logic that makes it a singleton (the part that initializes a static variables, for example) into two separate classes. That way, you can keep the single responsibility principle (SRP) and also have a way to override singleton logic. (The Art of Unit Testing 261-262)
Questo modello continua a perpetuare lo stato globale. Tuttavia, risulta in un design verificabile, quindi mi sembra un buon modello per mitigare il danno di un singleton.
Tuttavia, Osherove non dà un nome a questo modello; ma nominare un modello, secondo la Gang of Four, è importante:
Naming a pattern immediately increases our design vocabulary. It lets us design at a higher level of abstraction. (3)
Esiste un nome standard per questo modello? Sembra abbastanza diverso da un singleton standard per meritare un nome separato. Singleton disaccoppiati , forse?