"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > बिल्डर डिज़ाइन पैटर्न

बिल्डर डिज़ाइन पैटर्न

2024-08-31 को प्रकाशित
ब्राउज़ करें:757

Builder Design Pattern

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

बिल्डर क्या है?

बिल्डर पैटर्न एक जटिल वस्तु के निर्माण को उसके प्रतिनिधित्व से अलग करता है, जिससे एक ही निर्माण प्रक्रिया को अलग-अलग प्रतिनिधित्व बनाने की अनुमति मिलती है। यह विशेष रूप से तब उपयोगी होता है जब किसी ऑब्जेक्ट को कई चरणों में या कई संभावित कॉन्फ़िगरेशन के साथ बनाने की आवश्यकता होती है।

बिल्डर लाभ

  • निर्माण और प्रतिनिधित्व का पृथक्करण: किसी वस्तु के निर्माण को उसके अंतिम प्रतिनिधित्व से अलग करने की अनुमति देता है।
  • वृद्धिशील निर्माण: जटिल वस्तुओं के निर्माण को क्रमिक रूप से और चरण दर चरण अनुमति देता है।
  • कोड का पुन: उपयोग: सामान्य निर्माण चरणों को परिभाषित करके कोड के पुन: उपयोग की सुविधा प्रदान करता है जिसे कई तरीकों से जोड़ा जा सकता है।

एक बिल्डर का कार्यान्वयन

हमारे बिल्डर को लागू करने के लिए, आइए एक जटिल वस्तु की कल्पना करें जहां कई क्षेत्रों और यहां तक ​​कि अन्य समूहीकृत वस्तुओं को आरंभ करना आवश्यक होगा। एक घर के बारे में क्या ख्याल है? जहां हमारे पास दो प्रकार का निर्माण होगा, एक पारंपरिक जिसमें कंक्रीट और ईंटों का उपयोग किया जाएगा, और दूसरा लकड़ी से बना होगा।

1 - संरचना को परिभाषित करना

सबसे पहले, हमें उस वस्तु की संरचना को परिभाषित करने की आवश्यकता है जिसे हम बनाना चाहते हैं। जैसा कि पहले कहा गया था, हम एक घर बनाने जा रहे हैं। इस संरचना के अंदर हम वह सब रखेंगे जो इसे बनाने के लिए आवश्यक है।

// house.go

package main

type House struct {
    Foundation string
    Structure  string
    Roof       string
    Interior   string
}

2 - बिल्डर इंटरफ़ेस को परिभाषित करना

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

//house.go

package main

type House struct {
    Foundation string
    Structure  string
    Roof       string
    Interior   string
}

type HouseBuilder interface {
    SetFoundation()
    SetStructure()
    SetRoof()
    SetInterior()
    GetHouse() House
}

3 - बिल्डर को ठोस रूप से लागू करना

आइए दो नई फ़ाइलें बनाएं, कंक्रीटहाउस और वुडहाउस। वे हाउसबिल्डर इंटरफ़ेस का अनुसरण करने वाले एक ठोस वर्ग का कार्यान्वयन करेंगे।

//concreteHouse.go

package main

type ConcreteHouseBuilder struct {
    house House
}

func (b *ConcreteHouseBuilder) SetFoundation() {
    b.house.Foundation = "Concrete, brick, and stone"
}

func (b *ConcreteHouseBuilder) SetStructure() {
    b.house.Structure = "Wood and brick"
}

func (b *ConcreteHouseBuilder) SetRoof() {
    b.house.Roof = "Concrete and reinforced steel"
}

func (b *ConcreteHouseBuilder) SetInterior() {
    b.house.Interior = "Gypsum board, plywood, and paint"
}

func (b *ConcreteHouseBuilder) GetHouse() House {
    return b.house
}
//woodHouse.go

package main

type WoodHouseBuilder struct {
    house House
}

func (b *WoodHouseBuilder) SetFoundation() {
    b.house.Foundation = "Wooden piles"
}

func (b *WoodHouseBuilder) SetStructure() {
    b.house.Structure = "Wooden frame"
}

func (b *WoodHouseBuilder) SetRoof() {
    b.house.Roof = "Wooden shingles"
}

func (b *WoodHouseBuilder) SetInterior() {
    b.house.Interior = "Wooden panels and paint"
}

func (b *WoodHouseBuilder) GetHouse() House {
    return b.house
}

4- निदेशक को परिभाषित करना

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

//director.go

package main

type Director struct {
    builder HouseBuilder
}

func (d *Director) Build() {
    d.builder.SetFoundation()
    d.builder.SetStructure()
    d.builder.SetRoof()
    d.builder.SetInterior()
}

func (d *Director) SetBuilder(b HouseBuilder) {
    d.builder = b
}

5 - बिल्डर का उपयोग करना

अंत में, हम विभिन्न प्रकार के घर बनाने के लिए निदेशक और कंक्रीट बिल्डर्स का उपयोग करेंगे।

//main.go

package main

import (
    "fmt"
)

func main() {
    cb := &builder.ConcreteHouseBuilder{}
    director := builder.Director{Builder: cb}

    director.Build()
    concreteHouse := cb.GetHouse()

    fmt.Println("Concrete House")
    fmt.Println("Foundation:", concreteHouse.Foundation)
    fmt.Println("Structure:", concreteHouse.Structure)
    fmt.Println("Roof:", concreteHouse.Roof)
    fmt.Println("Interior:", concreteHouse.Interior)
    fmt.Println("-------------------------------------------")

    wb := &builder.WoodHouseBuilder{}
    director.SetBuilder(wb)

    director.Build()
    woodHouse := wb.GetHouse()

    fmt.Println("Wood House")
    fmt.Println("Foundation:", woodHouse.Foundation)
    fmt.Println("Structure:", woodHouse.Structure)
    fmt.Println("Roof:", woodHouse.Roof)
    fmt.Println("Interior:", woodHouse.Interior)
}

संक्षेप में

  1. स्ट्रक्चर हाउस: हमारे द्वारा बनाए जा रहे अंतिम उत्पाद का प्रतिनिधित्व करता है।
  2. हाउसबिल्डर इंटरफ़ेस: घर के विभिन्न हिस्सों के निर्माण के तरीकों को परिभाषित करता है।
  3. कंक्रीट कार्यान्वयन (कंक्रीटहाउसबिल्डर और वुडहाउसबिल्डर): हाउसबिल्डर इंटरफ़ेस लागू करें और विशिष्ट निर्माण चरणों को परिभाषित करें।
  4. निदेशक: निर्माण प्रक्रिया का प्रबंधन करता है, यह सुनिश्चित करते हुए कि चरण सही क्रम में बुलाए गए हैं।
  5. मुख्य कार्य: विभिन्न प्रकार के घर बनाने के लिए बिल्डर पैटर्न के उपयोग को प्रदर्शित करता है, प्रक्रिया को प्रबंधित करने और अंतिम उत्पाद प्राप्त करने के लिए निदेशक को बुलाता है।

निष्कर्ष

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

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/rflpazini/builder-design-pattern-2hm3?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.com से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3