आप जैसे पाठक MUO का समर्थन करने में मदद करते हैं। जब आप हमारी साइट पर लिंक का उपयोग करके खरीदारी करते हैं, तो हम संबद्ध कमीशन अर्जित कर सकते हैं। और पढ़ें।

बिल्डर डिजाइन पैटर्न किसी वस्तु के गुणों को समाहित करता है और आपको इसका प्रतिनिधित्व करने की अनुमति देता है। यह पैटर्न आपको विभिन्न गुणों के साथ जटिल वस्तुओं का निर्माण करने देता है, भले ही वे एक ही वर्ग के हों।

एक विशिष्ट वस्तु वर्ग में विशेषताएँ, निर्माता और विधियाँ होती हैं। बिल्डर पैटर्न आपको ऑब्जेक्ट क्लास से कंस्ट्रक्शन लॉजिक निकालने और बिल्डर्स नामक क्लास में रखने की अनुमति देता है। फिर आप इन बिल्डर वर्गों का उपयोग एक ही वस्तु के विभिन्न रूपों को बनाने के लिए कर सकते हैं।

जावा में बिल्डर पैटर्न लागू करना

बिल्डर पैटर्न का एक अच्छा उदाहरण पिज्जा ऑर्डरिंग सिस्टम है जो ग्राहकों को विभिन्न टॉपिंग विकल्पों का चयन करने की अनुमति देता है।

उत्पाद वर्ग

एक तरीका यह है कि बिल्डर को एक इंटरफ़ेस बनाया जाए, लेकिन आपको पहले एक उत्पाद वर्ग बनाना होगा। इस नमूना आवेदन में उत्पाद पिज्जा है।

जनताकक्षापिज़्ज़ा{
// गुण
निजीint यहाँ क्रम संख्या;
निजी डोरी पिज्जा का गुंथा हुआ आटा;
instagram viewer

निजी डोरी उपरी परत;

// गेटर्स और सेटर्स
जनताint यहाँgetOrderNumber(){
वापस करना क्रम संख्या;
}

जनताखालीपनsetOrderNumber(int यहाँ क्रम संख्या){
यहऑर्डरनंबर = ऑर्डरनंबर;
}

जनता डोरी getPizzaDough(){
वापस करना पिज्जा का गुंथा हुआ आटा;
}

जनताखालीपनsetPizzaDough(स्ट्रिंग पिज्जा आटा){
यह.पिज़्ज़ा आटा = पिज़्ज़ा आटा;
}

जनता डोरी getTopping(){
वापस करना उपरी परत;
}

जनताखालीपनसेट टॉपिंग(स्ट्रिंग टॉपिंग){
यहटॉपिंग = टॉपिंग;
}
}

बिल्डर वर्ग

पिज़्ज़ा जावा वर्ग तीन गुण हैं और उनके संबंधित गेटर्स और सेटर्स हैं, लेकिन कोई नहीं है कंस्ट्रक्टर के तरीके. बिल्डर इंटरफ़ेस आपको पिज़्ज़ा ऑब्जेक्ट के प्रत्येक पहलू को अलग से बनाने की अनुमति देगा। यह तब आपको संपूर्ण पिज़्ज़ा वस्तु को पुनः प्राप्त करने की अनुमति देगा।

जनताइंटरफेसनिर्माता{
जनताखालीपनcreatePizzaDough();
जनताखालीपनcreateTopping();
जनता पिज़्ज़ा getPizza();
}

नमूना पिज्जा एप्लिकेशन ग्राहकों को पनीर, पेपरोनी, प्याज, या विभिन्न संयोजनों जैसे किसी भी टॉपिंग को ऑर्डर करने की अनुमति देता है। इसलिए, एक पिज़्ज़ा जिसे ग्राहक ऑर्डर करेगा, वह चीज़ है।

जनताकक्षाचीज़पिज़्ज़ाबिल्डरऔजारनिर्माता{
निजी पिज्जा पिज्जा;

जनताचीज़पिज़्ज़ाबिल्डर(){
यहपिज्जा = नया पिज़्ज़ा();
}

@Override
जनताखालीपनcreatePizzaDough(){
यह.पिज़्ज़ा.सेटपिज़्ज़ा आटा("गुँथा हुआ आटा");
}

@Override
जनताखालीपनcreateTopping(){
यह.पिज़्ज़ा.सेटटॉपिंग("पनीर");
}

@Override
जनता पिज़्ज़ा getPizza(){
वापस करनायह।पिज़्ज़ा;
}
}

CheesePizzaBuilder वर्ग बिल्डर इंटरफ़ेस को लागू करता है और इसका उपयोग एक नया पनीर पिज्जा बनाने के लिए करता है। यह पिज़्ज़ा वस्तु का एक प्रतिनिधित्व है। यह इस तरह से भी करता है जो पिज़्ज़ा वर्ग से स्वतंत्र है।

CheesePizzaBuilder वर्ग पिज्जा वर्ग के बारे में ज्यादा नहीं जानता है, यह केवल यह जानता है कि इसे अपने कार्य को पूरा करने के लिए क्या जानना चाहिए। यह जानता है कि पिज़्ज़ा वर्ग में एक आटा और एक टॉपिंग गुण होता है, और यह इन गुणों को दो विशिष्ट मानों पर सेट करता है जो प्रत्येक चीज़ पिज़्ज़ा के पास होंगे। अब जब भी एप्लिकेशन चीज़पिज्जाबिल्डर क्लास को कॉल करता है तो यह एक नया पिज्जा बनाएगा जिसमें चीज़ टॉपिंग हो।

निदेशक वर्ग

डायरेक्टर क्लास बिल्डर पैटर्न का एक महत्वपूर्ण पहलू है। कंक्रीट बिल्डर वर्ग का एकमात्र उद्देश्य विशिष्ट वस्तु बनाना है। यह किसी वस्तु के अलग-अलग हिस्सों को अलग-अलग बनाकर इसे प्राप्त करता है।

हालाँकि, बिल्डर कंक्रीट वर्ग एल्गोरिथम से अनजान हैं। बिल्डर वर्ग में से कोई भी टॉपिंग डालने से पहले आटा बनाना नहीं जानता। यह निर्देशक वर्ग का कार्य है।

जनताकक्षानिदेशक{
निजी बिल्डर पिज्जाबिल्डर;

जनतानिदेशक(बिल्डर पिज्जाबिल्डर){
यहपिज्जाबिल्डर = पिज्जाबिल्डर;
}

जनता पिज़्ज़ा getPizza(){
वापस करनायह.pizzaBuilder.getPizza ();
}

जनताखालीपनmakePizza(){
यहपिज्जाबिल्डर.createPizzaDough();
यहपिज्जाबिल्डरटॉपिंग बनाएं();
}
}

डायरेक्टर क्लास पिज्जा बनाने के लिए बिल्डर इंटरफेस का उपयोग करता है। यह एल्गोरिथम का रक्षक है।

बिल्डर डिज़ाइन पैटर्न का उपयोग करने के लाभ

बिल्डर डिजाइन पैटर्न का उपयोग करने का प्रमुख लाभ इसकी एनकैप्सुलेशन संपत्ति है। यह सॉफ्टवेयर इंजीनियरिंग का एक महत्वपूर्ण पहलू है, क्योंकि यह सुरक्षित अनुप्रयोगों के विकास में सहायता करता है।

इस डिज़ाइन पैटर्न का एक अन्य लाभ इसका वस्तु निर्माण दृष्टिकोण है। यह आपको मल्टीस्टेप प्रक्रियाएं बनाने देता है, जहां प्रत्येक चरण स्वतंत्र होता है, जो डिबगिंग को आसान बनाता है।