Statik iç yapıcı sınıfını kullanmanın avantajı


9

Bir şirketin kod yönergelerini yazarken, kendimi teleskopik kurucular yerine Etkili Java'dan Oluşturucu desenini kullanmanızı öneriyorum .

Bununla birlikte, biraz daha düşündükten sonra, kesinlikle daha zarif bir çözüm sadece builder sınıfını kaldırmak ve ayrıca ekstra yapıcıları isteğe bağlı argümanlarla kaldırmaktır.

Bu yüzden sadece gerekli parametreleri, normal alıcıları / ayarlayıcıları olan bir kurucuya sahip olun ve kodu yorumlayın. Uygularken sadece yr nesnesinin yeni bir örneğini oluşturun, sonra değerleri ayarlayın.

Orijinal düşüncem, hangi parametrelerin isteğe bağlı olduğu ve neyin gerekli olduğu konusundaki karışıklığı ortadan kaldırmaktan elde edilen faydaydı; ancak asıl fayda, yöntem zincirleme / akıcı arayüzün kullanılmasıdır.

IDE bacak işini yapabildiğinden ve ayrıca çok sayıda (15+) isteğe bağlı parametre varsa, oluşturucu deseninin birçok yeni örneği yaptığınızda faydaları vardır. Ancak, statik iç sınıfı kodlamak için fazladan zamana değer mi, kurucuyu kullanmanızı tavsiye eder misiniz, yoksa zaman kaybı mı?


Yanıtlar:


8

Yapıcıların geçerli ve tutarlı bir nesne oluşturmak için gereken tüm zorunlu değerleri sağlaması gereken bir deseni takip etme eğilimindeyim . İsteğe bağlı değerler için, ayarlayıcıların mümkün olduğunca az kullanılması için en yaygın varsayılanın ne olması gerektiğini düşünmeye çalışıyorum.

Çok sayıda isteğe bağlı değer olduğunu veya isteğe bağlı değerlerin daha büyük bir oranının varsayılanlarından değiştirilme eğiliminde olduğunu fark edersem, oluşturucu desenini (statik iç oluşturucu veya benzer bir tasarım) kullanacağım.

Josh genellikle oldukça iyi tavsiyelerde bulunur - onun hakkında sevdiğim en iyi şey, tavsiyelerin siperlerden gelmesidir - Java'nın bazı kısımlarını tasarlarken hata yaptığını itiraf eder ve Etkili Java kısmen 'tedavi' yöntemidir. konuş :-)


1
Bu, iç
kısmın

Değişmezlik ve yan etki serbest de bir hedeftir.
Martijn Verburg

6

Josh Bloch'un Builder modeli, tıpkı GoF Builder Pattern gibi, zincirleme kurucuların uzun listesi olmadan çok sayıda varsayılan veri içeren değişmez bir nesne oluşturmanın bir yolunu sunar .

"Gerekli parametreleri, normal alıcıları / ayarlayıcıları olan tek yapıcıya" sahipseniz, nesneniz artık değiştirilemez. yani. Başladıktan sonra uzun süre değiştirebilirsiniz.

Bu sizin için bir sorun değilse, ilk etapta Builder desenine asla ihtiyacınız yoktu. Eğer bu bir problemse çözümünüz kusurludur.


Ben değişebilirdir ... oluşturucu deseni wiki, değişkenlikle bile GoF örneği ilgisi olduğunu sanmıyorum en.wikipedia.org/wiki/Builder_pattern#Java ayrıca, desen Söz özetlenen faydaları vardır.
NimChimpsky

3
@NimChimpsky: Oluşturucu deseninin değiştirilebilir bir nesne oluşturmak için uygulanıp uygulanamayacağı söz konusu değil. Soru şu ki, değil mi? Harfler ve ayarlayıcılar, nesnelerin değişebildiği sonsuzluk için etrafta olmuştur, bunlar mükemmel bir şekilde sağlam bir çözümdür, ancak insanlar değişmez nesneler oluşturmada ortak bir problemle karşılaştılar: yönetilemez yapı zincirleri. Oluşturucu ortak bir çözümdü ve böylece iletişimi kolaylaştırmak için bir kalıp haline geldi.
pdr
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.