/ Gecikme Lag? Buna BS deniyorum. Bu uygulamadan tam olarak sıfır ek yük olmalıdır. ( Düzenleme: Yorumlarda, bunun aslında HotSpot VM tarafından gerçekleştirilen optimizasyonları engelleyebileceği belirtildi. VM uygulamasının bunu onaylaması veya reddetmesi için yeterince bilgim yok. sanal fonksiyonların uygulanması.)
Yükü biraz kod var. İstediğiniz temel sınıftan tüm yapıcıları, parametrelerini ileterek oluşturmalısınız.
Ayrıca, bunu bir anti-patern olarak görmüyorum. Ancak bunu kaçırılmış bir fırsat olarak görüyorum. Yalnızca yeniden adlandırma uğruna temel sınıfı türeten bir sınıf oluşturmak yerine, bunun yerine koleksiyonu içeren ve büyük küçük harf özel, gelişmiş bir arayüz sunan bir sınıf oluşturmaya ne dersiniz ? Widget önbelleğiniz gerçekten bir haritanın tam arabirimini sunmalı mı? Yoksa bunun yerine özel bir arayüz sunmalı mı?
Dahası, koleksiyonlar söz konusu olduğunda, desen basit bir şekilde uygulamaların değil, arayüzlerin kullanımıyla ilgili genel kurallarla birlikte çalışmaz - yani düz toplama kodunda, bir tür oluşturacak HashMap<String, Widget>
ve sonra onu bir değişkene atayacaksınız Map<String, Widget>
. Kişisel WidgetCache
kutu uzatmaz Map<String, Widget>
bir ara yüz, çünkü. Temel arayüzü genişleten bir arayüz olamaz, çünkü HashMap<String, Widget>
bu arayüzü uygulamaz ve diğer standart koleksiyonları da kullanmaz. Ve onu genişleten bir sınıf yapabilirken, o HashMap<String, Widget>
zaman değişkenleri WidgetCache
veya olarak tanımlamanız gerekir Map<String, Widget>
ve birincisi farklı bir koleksiyonun yerine koyma esnekliğini kaybedersiniz (belki bazı ORM'nin tembel yükleme koleksiyonunu) sınıfın olması.
Bu karşılaştırma noktalarından bazıları benim önerilen uzmanlık sınıfım için de geçerli.
Bunların hepsi dikkate alınması gereken noktalar. Doğru seçim olabilir veya olmayabilir. Her iki durumda da meslektaşınızın önerdiği argümanlar geçerli değildir. Bunun bir anti-patern olduğunu düşünüyorsa, ismini yazmalı.