मुझे यकीन नहीं है कि एक बीन शुरू करने के लिए "सर्वश्रेष्ठ" तरीका है। मुझे लगता है कि प्रत्येक के लिए पेशेवर और विपक्ष हैं, और स्थिति के आधार पर, एक या दूसरा उचित हो सकता है। यह निश्चित रूप से एक विस्तृत सूची नहीं है, लेकिन यहां कुछ चीजों पर विचार करना है।
एक कन्स्ट्रक्टर का उपयोग करने से आप एक अपरिवर्तनीय बीन प्राप्त कर सकते हैं। अपरिवर्तनीय वस्तुएं अच्छी होती हैं यदि आप उन्हें अपने डिजाइन में फिट कर सकते हैं। उन्हें प्रतिलिपि, धारावाहिक पहुंच या धागे के बीच अन्य विशेष हैंडलिंग की आवश्यकता नहीं है। यदि आपके पास सेटर्स हैं, तो आपकी ऑब्जेक्ट अपरिवर्तनीय नहीं है। एक कन्स्ट्रक्टर का उपयोग करना यह भी सुनिश्चित करता है कि ऑब्जेक्ट ठीक से शुरू हो गया है। कन्स्ट्रक्टर खत्म होने के बाद, ऑब्जेक्ट मान्य है। यदि आपकी ऑब्जेक्ट को सेट करने के लिए सेटर्स का उपयोग करने की आवश्यकता है, तो यह एक अवैध ऑब्जेक्ट होना संभव है।
दूसरी ओर, रचनाकारों का उपयोग अक्सर टेलीस्कोपिंग समस्या का कारण बनता है। कई बार आपको कई अलग-अलग रचनाकारों की आवश्यकता होगी, जिनमें से अधिकतर किसी अन्य निर्माता का सुपरसैट होगा। अक्सर यह सुविधा के लिए हैं। उदाहरण के लिए: यह है कि मैं बहुत ज्यादा पसंद तथाकथित "बढ़ाया" बिल्डर JavaOne में जोश बलोच द्वारा प्रस्तुत पैटर्न है करने के लिए
public class Person {
public Person(String name) { ... }
public Person(String name, String phone) { ... }
public Person(String name, String phone, String email) { ... }
}
एक वैकल्पिक। आप इसे अपनी पुस्तक "प्रभावी जावा, द्वितीय संस्करण" में देख सकते हैं। यदि आप पैटर्न का उपयोग करने के तरीके को देखते हैं, तो यह आपके "AfterProperties" विधि समस्या को भी हल करेगा। निर्माता पैटर्न गारंटी देगा कि ऑब्जेक्ट सही ढंग से प्रारंभ किया गया है।
यहाँ एक अतिरिक्त ब्लॉग पोस्ट पैटर्न पर चर्चा है: http://www.screaming-penguin.com/node/7598
मुझे यकीन है कि यह आपकी वसंत आवश्यकता में फिट बैठता है नहीं कर रहा हूँ, लेकिन सामान्य तौर पर, मैं बिल्डर के एक बड़े प्रशंसक हूँ।
+1 - वास्तव में अच्छा जवाब –
मुझे आपका उत्तर पसंद है, लेकिन आपके लिंक मर गए हैं:/ –
धन्यवाद मैक्सिम, मैंने पोस्ट को एक लिंक के साथ अपडेट किया जो अभी भी बनी हुई है। :-) – lycono