ऊपर दिए गए आपके उदाहरण के लिए यह एक स्थिर निर्माता प्रदान करने के लिए अधिक समझ में नहीं आता है। और आमतौर पर जब आप एक स्थिर कन्स्ट्रक्टर प्रदान करते हैं तो आपको सामान्य कन्स्ट्रक्टर को निजी बनाना चाहिए। अन्यथा सामान्य कन्स्ट्रक्टर के साथ एक उदाहरण बनाना अभी भी संभव है।
मैं यहां एक और उदाहरण के साथ व्याख्या करने की कोशिश करता हूं, जब आप स्थैतिक फैक्ट्री विधियों का उपयोग कर सकते हैं। फायदों में से एक यह है कि आप फैक्ट्री विधियों को समझने योग्य नाम दे सकते हैं।
class Complex {
public static Complex fromCartesian(double real, double imag) {
return new Complex(real, imag);
}
public static Complex fromPolar(double modulus, double angle) {
return new Complex(modulus * cos(angle), modulus * sin(angle));
}
private Complex(double a, double b) {
//...
}
}
Complex c = Complex.fromPolar(1, pi)
या एक और उदाहरण सिंगलटन पैटर्न होगा। वहां आप केवल एक उदाहरण प्रदान नहीं करना चाहते हैं। इसलिए यही कारण है कि आप कन्स्ट्रक्टर को निजी बनाते हैं और अपनी खुद की स्थापना विधि बनाते हैं जहां आप सुनिश्चित करते हैं कि हमेशा एक उदाहरण उपलब्ध होता है।
public class Singleton {
private volatile static Singleton singleton;
private Singleton() {
}
// synchronized keyword has been removed from here
public static Singleton getSingleton() {
if(singleton==null) {
synchronized(Singleton.class){
if(singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
Factory Method Pattern Wikipedia
संभावित डुप्लिकेट: http://stackoverflow.com/questions/929021/what-are-static-factory-methods-in-java – oksayt
+1 प्रभावी जावा पढ़ने के लिए +1 – flash