Dlaczego singleton jest zły?
18 January, 2013-Wzorce
Singleton jest jednym z dobrze znanych i często stosowanych antywzorców. Zacznijmy od razu od poniższego przykładu:
public class OrderProcessor { public void Process(Order order) { // Validate // Do some work if ( Settings.Instance.ShouldLog ) Logger.Instance.Log("Order id=5 processed successfully"); } }
Jeśli mielibyśmy napisać unit test, to jak to zrobić?
Jak wytestować w izolacji klasę procesora?
Można sobie wyobrazić, że ustawienia czytają jakiś plik z dysku, a logger zapisuje.
Jest bardzo trudno zestawić łatwo i szybko takie środowisko. Jeśli tak będzie to szybko przestanie nam się chcieć pisać testy.
Więcej na ten i powiązane tematy można znaleźć w najnowszym artykule w Programiście. Polecam.