मैंने अभी कुछ जावा अनुप्रयोगों को लागू किया है, अब तक केवल डेस्कटॉप अनुप्रयोग। मैं म्यूटेटर (सेटर्स और गेटर्स ), जिसे JavaBeans भी कहा जाता है, का उपयोग करने के बजाय एप्लिकेशन में डेटा पास करने के लिए अपरिवर्तनीय वस्तुओं का उपयोग करना पसंद करता हूं ।
लेकिन जावा दुनिया में, JavaBeans का उपयोग करना बहुत अधिक सामान्य लगता है, और मुझे समझ नहीं आ रहा है कि मुझे उनके बजाय इसका उपयोग क्यों करना चाहिए। व्यक्तिगत रूप से कोड बेहतर दिखता है अगर यह केवल हर समय राज्य को बदलने के बजाय अपरिवर्तनीय वस्तुओं से निपटता है।
आइटम 15 में अपरिवर्तनीय वस्तुओं की भी सिफारिश की जाती है : उत्परिवर्तन को कम करें , प्रभावी जावा 2ed ।
यदि मेरे पास जावाबीन केPerson
रूप में लागू की गई कोई वस्तु है, तो ऐसा लगेगा:
public class Person {
private String name;
private Place birthPlace;
public Person() {}
public setName(String name) {
this.name = name;
}
public setBirthPlace(Place birthPlace) {
this.birthPlace = birthPlace;
}
public String getName() {
return name;
}
public Place getBirthPlace() {
return birthPlace;
}
}
और Person
एक अपरिवर्तनीय वस्तु के रूप में लागू किया गया :
public class Person {
private final String name;
private final Place birthPlace;
public Person(String name, Place birthPlace) {
this.name = name;
this.birthPlace = birthPlace;
}
public String getName() {
return name;
}
public Place getBirthPlace() {
return birthPlace;
}
}
या struct
C में करीब :
public class Person {
public final String name;
public final Place birthPlace;
public Person(String name, Place birthPlace) {
this.name = name;
this.birthPlace = birthPlace;
}
}
कार्यान्वयन विवरण छिपाने के लिए मेरे पास अपरिवर्तनीय वस्तु में गेटर्स भी हो सकते हैं। लेकिन जब से मैं इसे केवल struct
"गेटर्स" को छोड़ना पसंद करता हूं, और इसे सरल रखना पसंद करता हूं।
बस, मुझे समझ में नहीं आता है कि जावाबीन का उपयोग करना बेहतर क्यों है, या यदि मैं अपने अपरिवर्तनीय पीओजेओ के साथ जा सकता हूं या नहीं रखूं?
जावा पुस्तकालयों में से कई के लिए JavaBeans का बेहतर समर्थन प्रतीत होता है, लेकिन हो सकता है कि अपरिवर्तनीय POJOs के लिए अधिक समर्थन समय के साथ अधिक लोकप्रिय हो जाए?