Bu nedenle, ünlü Etkili Java kitabında, bir sınıfı başlatmak için bir iç statik Builder sınıfına sahip olabileceğiniz bir Builder modeli tanıtılmaktadır. Ben anlamakta güçlük çektikleri AncakEtkin Java'da açıklandığı gibi yuvalanmış bir Builder sınıfı gerçekten gerekli mi?
public class Example {
private int a;
private int b;
public static class Builder() {
private int a;
private int b;
public Builder a(int a) {
this.a = a;
return this;
}
public Builder b(int b) {
this.b = b;
return this;
}
public Example build() {
return new Example(this);
}
}
private Example(Builder builder) {
this.a = builder.a;
this.b = builder.b;
}
}
neden biz gerçekten bir iç Builder class
ihtiyacım var: Kitap bir sınıfın aşağıdaki Tasarım önerir? Yukarıdaki kod, alan bildirimleri için yinelenen satırlara sahiptir (int a, b), daha fazla alanımız olsaydı, bu durum nispeten dağınık olur.
Neden sadece Builder
sınıfın kurtulmak ve Example
sınıf Builder
sınıfında olan tüm set
yöntemleri almasına izin alamadım?
Example e = new Example().a(3).b.(3);
yerine
Example e = new Example.Builder.a(3).b(3).build();
ait NOT olacaktı, Example
örneğini: Kitap parametrelerinin uzun bir liste ayarlanması gereken sınıflar için bu kalıbı önerilir.
Bu, değişmez nesneler üretmek için kullanışlıdır. – shmosel
Bazı karmaşık başlatma durumlarında, değerleriniz zaten ayarlanmış olmalıdır. Ayrıca, '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' Bu durumda – EpicPandaForce
Builder gerekli değildir ve aslında kodu daha ayrıntılı hale getirir. –