अ‍ॅबस्ट्रॅक्ट फॅक्टरी पॅटर्न आणि डिझाईन पॅटर्नमधील फॅक्टरी मेथड पॅटर्न मधील फरक आपल्याला कसा आठवेल?


उत्तर 1:

फॅक्टरी डिझाइन नमुना:

  • हे क्रिएशनल डिझाईन पॅटर्न अंतर्गत येते. फॅक्टरी नमुना म्हणते की इनपुट प्रकार वापरुन ऑब्जेक्ट क्रिएशन दुसर्‍या क्लासद्वारे हाताळले जाईल.

फायदे:

  • हे सैल-जोड्या परवानगी देते.

फॅक्टरी डिझाईन पॅटर्न कधी वापरावे?

  • फॅक्टरी डिझाइनचा नमुना वापरला जातो जेव्हा आमच्याकडे एकाधिक उप-वर्गांसह सुपरक्लास असतात आणि इनपुटच्या आधारे, आम्हाला उप-वर्गापैकी एक परत करणे आवश्यक आहे. उदाहरणः जर एखादा रेस्टॉरंट व्हेज फूड, मांसाहार नसलेले खाद्य आणि इटालियन खाद्य देते. व्हेजफूड, नॉनवेजफूड आणि इटालियन फूड असे तीन वर्ग मानले ज्यांचे सुपरक्लास फूड आहे. जर एखादा ग्राहक "व्हेज" विचारतो तर फॅक्टरी पद्धत "व्हेजफूड" वर्ग परत करेल.

उदाहरणः

चरण 1: "अन्न" हा एक अमूर्त वर्ग तयार करा ज्यामध्ये "बिलपेरपरसन" आणि "आयटम" नावाचे दोन चल आहेत.

 सार्वजनिक अमूर्त वर्ग अन्न

{
    संरक्षित डबल बिलपेरपरसन;
    संरक्षित सेट आयटम;

    सार्वजनिक अन्न (डबल बिलपेरपर्सन)

    {
        this.billPerPerson = बिलपेरपरसन;
        this.items = नवीन हॅशसेट <> ();
    }

    पब्लिक डबल गेटबिल ()

    {
        रिटर्न बिलपेरपरसन;

    }

    सार्वजनिक संच getItems ()
    {
        रिटर्न आयटम;
    }
}

चरण 2: कंक्रीटचे वर्ग तयार करा जे अमूर्त वर्ग "अन्न" वाढवतात

सार्वजनिक वर्ग VegFood अन्न वाढवते
{
    सार्वजनिक VegFood ()

    {
        सुपर (100);
        आयटम.एडडी ("इडली");
        आयटम.एडडी ("डोसा");
        आयटम.एडडी ("वडा");
    }
}

सार्वजनिक वर्ग नॉनवेजफूड अन्न वाढवितो
{
    सार्वजनिक नॉनवेजफूड ()
    {
        सुपर (120);
        आयटम.एडडी ("बिर्याणी");
        आयटम.एडडी ("चिकन 65");
    }
}

चरण 3: माहितीच्या आधारे काँक्रीटसाठी ऑब्जेक्ट तयार करण्यासाठी एक फूड सर्व्हर तयार करा जो फॅक्टरी वर्ग आहेः

सार्वजनिक वर्ग FoodServer

{
    सार्वजनिक स्टॅटिक फूड गेटफूड (स्ट्रिंग फूडटाइप)

    {
        जर (FoodType.equals ("veg"))
        {
            नवीन VegFood () परत करा;
        }
        अन्यथा जर (FoodType.equals ("non veg"))
        {
            नवीन नॉनवेजफूड () परत करा;
        }
        अन्यथा
        {
            सिस्टम.आउट.प्रिंटलन ("आम्ही सेवा देत नाही" + फूडटाइप);
            रिटर्न शून्य
        }
    }
}

चरण 4: मुख्य प्रकार "ग्राहक" अन्नाच्या प्रकारावर आधारित आवश्यक अन्न मिळविण्यासाठी.

सार्वजनिक वर्ग ग्राहक
{
    सार्वजनिक स्टॅटिक रिक्त मुख्य (स्ट्रिंग [] आर्क)
    {
        खाद्य ग्राहक 1 फूड = फूड सर्व्हर.गेडफूड ("वेज");
        सिस्टम.आउट.प्रिंटलन ("ग्राहक 1");
        सिस्टम.आउट.प्रिंटलन ("आयटम:" + ग्राहक 1 फूड.जेट आयटम (). टूस्ट्रिंग ());
        सिस्टम.आउट.प्रिंटलन ("बिल:" + ग्राहक 1 फूड.जेटबिल ());
        खाद्य ग्राहक 2 फूड = फूड सर्व्हर.गेडफूड ("नॉन वेज");
        सिस्टम.आउट.प्रिंटलन ("ग्राहक 1");
        सिस्टम.आउट.प्रिंटलन ("आयटम:" + ग्राहक 2फूड.जेट आयटम (). टूस्ट्रिंग ());
        सिस्टम.आउट.प्रिंटलन ("बिल:" + ग्राहक 2फूड.जेटबिल ());
    }
}

अ‍ॅबस्ट्रॅक्ट फॅक्टरी डिझाईन पॅटर्न:

  • हे क्रिएशनल डिझाईन पॅटर्न अंतर्गत येते. संबंधित किंवा अवलंबून असलेल्या वस्तूंचे कुटुंब तयार करण्यासाठी त्यांचे ठोस वर्ग निर्दिष्ट न करता इंटरफेस प्रदान करते. अ‍ॅबस्ट्रॅक्ट फॅक्टरी नमुना एक सुपर फॅक्टरी आहे जो इनपुटच्या आधारे सर्वोत्कृष्ट फॅक्टरी परत करेल. कारखान्यांचा कारखाना म्हणून काम करते. .हे कोणते फॅक्टरी परत येईल हे जाणून घेण्यापासून क्लायंटचे अ‍ॅब्स्ट्रॅक्ट होते.

वास्तविक जीवनाचे उदाहरणः

  • साबण बनवणा a्या एका मोठ्या कारखान्याचा विचार करा. त्या कारखान्यात साबणासाठी आवश्यक असणार्‍या सर्व वस्तू तयार केल्या जात नाहीत. त्यामध्ये "साबण बार", "साबण लपेटणे" इत्यादींचे उत्पादन करणारे अनेक उप-कारखाने असतील आणि सर्व काही एकत्र केले जाईल. मुख्य कारखान्याने

अ‍ॅबस्ट्रॅक्ट फॅक्टरी डिझाईन पॅटर्न कधी वापरावे?

  • ऑब्जेक्ट कसे तयार केले जातात आणि कोणत्या वर्गासाठी ऑब्जेक्ट तयार केले जाते याबद्दल क्लायंट स्वतंत्र असले पाहिजे. जेव्हा वर्गातील कुटुंबातून एखादी वस्तू तयार करण्याची आवश्यकता असते तेव्हा हे उपयुक्त आहे.

सुचना: हे गोंधळात टाकणारे असू शकते म्हणून कृपया या पृष्ठाच्या शेवटी मी एम्बेड केलेले व्हिडिओ पहा.

उदाहरणः

पायरी 1:

  • "कोर्स" नावाचा एक इंटरफेस तयार करा.
सार्वजनिक इंटरफेस कोर्स
{
    पब्लिक स्ट्रिंग getCourseName ();
}

चरण 2:

  • "कोर्स" इंटरफेसची अंमलबजावणी करणारे ठोस वर्ग तयार करा.
सार्वजनिक वर्ग प्रोग्रामिंग कोर्स कोर्स कार्यान्वित करतो
{
    @ ओव्हरराइड
    पब्लिक स्ट्रिंग getCourseName ()
    {
       "जावा" परत;
    }
}

सार्वजनिक वर्ग नॉनप्रोग्रामिंग कोर्स कोर्स लागू करते
{
    @ ओव्हरराइड
    पब्लिक स्ट्रिंग getCourseName ()
    {
        "डीएसपी" परत करा;
    }
}

स्टेप 3:

  • "स्त्रोत" नावाचा एक इंटरफेस तयार करा.
सार्वजनिक इंटरफेस स्रोत
{
    पब्लिक स्ट्रिंग getSourceName ();
}

चरण 4:

  • "स्त्रोत" इंटरफेस लागू करणारी ठोस वर्ग तयार करा.
सार्वजनिक वर्ग ऑफलाइन स्त्रोत लागू करते
{
    @ ओव्हरराइड
    पब्लिक स्ट्रिंग getSourceName ()
    {
        "पुस्तके" परत;
    }
}

सार्वजनिक वर्ग ऑनलाईन उपकरणे
{
    @ ओव्हरराइड
    पब्लिक स्ट्रिंग getSourceName ()
    {
        "YouTube" परत;
    }
}

चरण 5:

  • "सोर्सकोर्स फॅक्टरी" हा एक अमूर्त वर्ग तयार करा.
सोर्सकोर्स फॅक्टरी
{
    पब्लिक अ‍ॅबस्ट्रॅक्ट सोर्स गेटसोर्स (स्ट्रिंग सोर्सटाइप);
    
    पब्लिक अ‍ॅबस्ट्रॅक्ट कोर्स गेटकोर्स (स्ट्रिंग कोर्सटाइप);
}

चरण 6:

  • "स्त्रोत कोर्सफैक्टरी" वाढविणारा फॅक्टरी वर्ग "कोर्स फॅक्टरी" तयार करा
सार्वजनिक वर्ग कोर्सफैक्टरी स्त्रोत कोर्सफक्टरी वाढवितो
{
    @ ओव्हरराइड
    सार्वजनिक स्त्रोत गेटसोर्स (स्ट्रिंग सोर्सटाइप)
    {
        रिटर्न शून्य
    }

    @ ओव्हरराइड
    पब्लिक कोर्स गेटकोर्स (स्ट्रिंग कोर्सटाइप)
    {
        if (अर्थातType.equalsIgnoreCase ("प्रोग्रामिंग"))
        {
            नवीन प्रोग्रामिंग कोर्स () परत करा;
        }
        अन्यथा तर (कोर्सटाइप.इक्वेल्सइग्नोरकेस ("नॉन प्रोग्रामिंग"))
        {
            नवीन नॉनप्रोग्रामिंग कोर्स () परत करा;
        }
        अन्यथा
        {
            रिटर्न शून्य
        }
    }
}

चरण 7:

  • "स्त्रोत कोर्स फॅक्टरी" वाढविणारा फॅक्टरी वर्ग तयार करा
पब्लिक क्लास सोर्सफैक्टरी सोर्सकोर्स फॅक्टरी विस्तारित करते
{

    @ ओव्हरराइड
    सार्वजनिक स्त्रोत गेटसोर्स (स्ट्रिंग सोर्सटाइप)
    {
        जर (सोर्सटाइप.इक्युल्सइग्नोरकेस ("ऑनलाइन"))
        {
            नवीन ऑनलाईन परत करा ();
        }
        अन्यथा जर (स्त्रोत टाईप.एकल्स इग्नोरकेस ("ऑफलाइन"))
        {
            नवीन ऑफलाइन () परत करा;
        }
        अन्यथा
        {
            रिटर्न शून्य
        }
    }

    @ ओव्हरराइड
    पब्लिक कोर्स गेटकोर्स (स्ट्रिंग कोर्सटाइप)
    {
       रिटर्न शून्य
    }
    
}

चरण 8:

  • वास्तविक फॅक्टरी क्लास ऑब्जेक्ट मिळविण्यासाठी अ‍ॅबस्ट्रॅक्ट फॅक्टरी क्लास कॉल करणारा एक मुख्य वर्ग तयार करा आणि त्यानंतर इतर ऑपरेशन्स करण्यासाठी तो त्या ऑब्जेक्टचा वापर करतो.
 सार्वजनिक वर्ग
{
    सार्वजनिक स्टॅटिक रिक्त मुख्य (स्ट्रिंग [] आर्क)
    {
        सोर्सकोर्सफैक्टरी कोर्स = फॅक्टरीक्रिएटर.गेटसोर्सकोर्सफक्टरी ("कोर्स");

        सिस्टम.आउट.प्रिंटलन (कोर्स.ेटकोर्स ("प्रोग्रामिंग"). गेटकोर्सनेम ());

        सोर्सकोर्सफैक्टरी सोर्स = फॅक्टरीक्रिएटर.गेटसोर्सकोर्सफक्टरी ("स्त्रोत");
        सिस्टम.आउट.प्रिंट्लन (स्त्रोत.ेटसोर्स ("ऑनलाइन"). गेटसोर्सनेम ());

    }
}