"Etkin Java" bölümünde yer alan "Oluşturucu Kalıbı" ile ilgili bir sorum vardı. Deseni doğru bir şekilde uygulamak için .build()
yöntemine ihtiyacımız var mı?Builder Kalıbında bir .build() yöntemine mi ihtiyacımız var?
public class CoffeeDrink {
private int numEspressoShots;
private short milkType;
private boolean withWhip;
private CoffeeDrink() {
}
public static CoffeeDrink buildNewDrink() {
return new CoffeeDrink();
}
public CoffeeDrink withEspresso(int n) {
this.numEspressoShots = n;
return this;
}
public CoffeeDrink withMilkType(shot t) {
this.milkType = t;
return this;
}
public CoffeeDrink withWhip() {
this.withWhip = true;
return this;
}
}
Sonra nasıl kullandığımız: Bir statik iç Builder
sınıfı yoksa
CoffeeDrink c = CoffeeDrink.buildNewDrink()
.withEspresso(2)
.withMilkType(2)
.withWhip();
bu hala geçerli olur Örneğin, en aşağıda belirtilen sınıf var diyelim? Avantajlarından biri, nesnesini .build()
yönteminin çağrılıncaya kadar tutmaya devam etmesidir, ancak hala bir Builder
nesnesi oluşturuyorum. Sadece bazı açıklamalar arıyorum.
Oluşturucu Desen değişmez sınıfları ile çok avantajlı bir şekilde kullanılır. Onlarla birlikte, Builder, daha sonra immutable olan nihai ürünün nihai yapımında yardımcı olan değişken bir "yardımcı" sınıfıdır. Örneğiniz sadece basit bir POJO'dur ve JavaBeans'in dezavantajlarını paylaşır (değişken, eksik veya tutarsız bir durumda görülebilir). – scottb