कक्षा के बाहर बनाम बिल्डर पैटर्न का उपयोग करने के बीच क्या फायदे हैं?बाहरी वर्ग बनाम बिल्डर पैटर्न?
अंदर वर्ग:
public class Person {
private String name;
private String eyeColor;
private String hairColor;
public Person setName(String name) {
this.name = name;
return this;
}
public Person setEyeColor(String eyeColor) {
this.eyeColor = eyeColor;
return this;
}
public Person setHairColor(String hairColor) {
this.hairColor = hairColor;
return this;
}
}
// Example usage:
Person p = new Person()
.setName("Bob")
.setHairColor("Black")
.setEyeColor("Brown")
बाहर वर्ग:
public class Person {
private String name;
private String eyeColor;
private String hairColor;
public Person(String name, String eyeColor, String hairColor) {
this.name = name;
this.eyeColor = eyeColor;
this.hairColor = hairColor;
}
}
public class PersonBuilder {
private String name;
private String eyeColor;
private String hairColor;
public Person build() {
return new Person(name, eyeColor, hairColor);
}
public PersonBuilder with(String name) {
this.name = name;
return this;
}
public PersonBuilder setEyeColor(String eyeColor) {
this.eyeColor = eyeColor;
return this;
}
public PersonBuilder setHairColor(String hairColor) {
this.hairColor = hairColor;
return this;
}
}
// Example usage:
Person p = new PersonBuilder()
.setName("Bob")
.setHairColor("Black")
.setEyeColor("Brown")
.build();
यह राय आधारित है ... लेकिन मुझे लगता है कि यह अव्यवस्था को कम करने के अंदर है। आपके पास MyClass.Builder, MyClass2.builder, आदि हो सकते हैं - और MyClassBuilder, MyClass2Builder, आदि वर्गों का पूरा समूह नहीं है – ppeterka
साधारण चीजों के लिए यह वास्तव में कोई फर्क नहीं पड़ता है, हालांकि आप किसी अन्य के लिए सेटटर रिटर्न प्रकारों का उपयोग करना चाह सकते हैं संकेत (जटिल सेटर्स में) जिस स्थिति में बाहरी व्यक्ति ने अधिक लचीलापन दिया होगा। व्यक्तिगत रूप से मैं बाहरी के साथ जाऊंगा। – Thihara
आईएमएचओ, बिल्डर एक आंतरिक वर्ग होना चाहिए क्योंकि इसका उपयोग कक्षा के निर्माण द्वारा विशेष रूप से किया जाना है। इसके कारण, इसे नियमित कक्षा बनाने में कोई वास्तविक लाभ नहीं है। – hfontanez