2012-11-03 12 views
9

कृपया, क्या आप समझा सकते हैं कि क्यों गुवा के निर्माता रचनाकारों को निजी रूप से परिभाषित करना पसंद करते हैं, और वस्तुओं को बनाने के लिए स्थिर विधियों create() को परिभाषित करना पसंद करते हैं?अमरूद: क्यों कन्स्ट्रक्टर के बजाय विधियां बनाते हैं?

उत्तर

19

प्रभावी जावा आइटम 1: रचनाकारों के बजाय स्थैतिक फैक्ट्री विधियों पर विचार करें।

स्थिर कारखाने तरीकों के लाभ में शामिल हैं:

  • वे स्वतः प्रकार पैरामीटर अनुमान कर पूर्व जावा 7.
  • वे हमें विरासत पैटर्न नियंत्रित करने की अनुमति: हम बगैर अमरूद के भीतर संग्रह प्रकार उपवर्ग कर सकते हैं बाहरी कोड उन्हें subclass।
  • वे हमें वांछित प्रकार के मनमाना उप-वर्ग को वापस करने देते हैं, जिससे हमें कार्यान्वयन के विवरण बेहतर तरीके से छिपाने देते हैं।
+5

पुस्तक सामग्री है [ऑनलाइन उपलब्ध] (http://my.safaribooksonline.com/book/programming/java/9780137150021/creating-and-destroying-objects/ch02lev1sec1) भी। – david

+1

मैं उस लाभ को जोड़ूंगा जो मुझे अंत उपयोगकर्ता दृष्टिकोण से सबसे महत्वपूर्ण लगता है: उनके पास एक स्पष्ट नाम है। 'newHashMapWithCapacity (100)' नया हैश मैप (100) 'से अधिक स्पष्ट है। –

+2

@JBNizet: हम जेडीके संग्रह कार्यान्वयन के लिए उन तरीकों को प्रदान करते हैं, लेकिन हमारे घर के संग्रह के प्रकारों के लिए हम वास्तव में 'बनाने' की तुलना में अधिक विस्तृत फैक्ट्री नाम नहीं रखते हैं। (मुझे यकीन नहीं है कि बिल्कुल सही कारण था, बिल्कुल सही कारण के लिए।) –

संबंधित मुद्दे