Singleton'lar komünizm gibidir: her ikisi de kağıt üzerinde harika ses çıkarır, ancak pratikte problemlerle patlar.
Tekil desen, nesnelere erişim kolaylığına orantısız bir vurgu yapar. Her tüketicinin AppDomain kapsamlı bir nesne kullanmasını gerektirerek bağlamdan tamamen kaçınır ve değişen uygulamalar için hiçbir seçenek bırakmaz. Tamamen sıfır ifade gücü GetInstance()
eklerken , altyapı bilgisini sınıflarınıza yerleştirir (çağrı ) . Ne için değiştirmeden bir sınıfı tarafından kullanılan uygulama değiştiremezsiniz çünkü Aslında, sizin ifade gücünü azaltır hepsi bunlardan. Tek seferlik işlevsellik ekleyemezsiniz.
Sınıf Ayrıca, ne zaman Foo
bağlıdır Logger.GetInstance()
, Foo
etkin bir tüketicilerden bağımlılıklarından saklıyor. Bu Foo
, kaynağını okumadıkça ve bağlı olduğu gerçeğini ortaya çıkarmadıkça onu tam olarak anlayamayacağınız veya güvenle kullanamayacağınız anlamına gelir Logger
. Kaynağa sahip değilseniz, bu, bağlı olduğunuz kodu ne kadar iyi anlayabileceğinizi ve etkili bir şekilde kullanabileceğinizi sınırlar.
Statik özelliklerle / yöntemlerle uygulandığı şekliyle tekli desen, bir altyapının uygulanmasına yönelik bir saldırıdan biraz daha fazlasıdır. Alternatifler üzerinde fark edilebilir bir fayda sunmazken sizi sayısız şekilde sınırlar. İstediğiniz gibi kullanabilirsiniz, ancak daha iyi tasarımı destekleyen uygulanabilir alternatifler olduğu için, bu asla önerilen bir uygulama olmamalıdır.