Magento के कितने डिज़ाइन पैटर्न हैं?


15

Magento 2 में कितने डिज़ाइन पैटर्न हैं?

जवाबों:


37

Magento 1/2 डिजाइन पैटर्न

भाग 1: एमवीसी

मैग्नेटो एक अद्वितीय एमवीसी पैटर्न का उपयोग करता है, एक डोम आधारित कॉन्फ़िगरेशन परत का उपयोग करता है। यह नियमित मॉडल-व्यू-कंट्रोलर आर्किटेक्चर के शीर्ष पर एप्लिकेशन के कॉन्फ़िगरेशन और कार्यों को चलाने के लिए xml का लाभ उठाता है।

भाग 2: फ्रंट कंट्रोलर

Magento के अनुप्रयोग के लिए वर्कफ़्लो को लागू करने के लिए फ्रंट कंट्रोलर पैटर्न का उपयोग करता है। इसमें सभी अनुरोधों के लिए एक एकल प्रविष्टि बिंदु (index.php) है। आइए देखें कि यह सब कैसे काम करता है।

भाग 3: फैक्टरी

फैक्ट्री मेथड का उपयोग मैगेंटो में कक्षाओं को तत्काल करने के लिए किया जाता है। आप मैगेंटो में एक क्लास का नाम लेते हुए एक अमूर्त नाम पास करने वाले एक उपयुक्त विधि को कॉल करके एक क्लास नाम के बाद एक क्लास को इंस्टेंट करते हैं। आपके मॉड्यूल / / आदि / फ़ोल्डर में आपके कॉन्फ़िगरेशन एक्सएमएल फ़ाइलों में वर्ग समूह और उनके उपयुक्त सार घोषित किए जाते हैं।

भाग 4: सिंगलटन

मैगेंटो में फैक्ट्री क्लास एब्स्ट्रैक्शन और क्लास ग्रुप्स की तरह, सिंगलटन पैटर्न को ब्लॉक और क्लासेस के लिए तुरंत समान किया जाता है।

भाग 5: रजिस्ट्री

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

भाग 6: प्रोटोटाइप

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

भाग 7: ऑब्जेक्ट पूल

ऑब्जेक्ट पूल पैटर्न ऑब्जेक्ट्स को दोबारा उपयोग करने और उन्हें एक बार समाप्त करने के बजाय बार-बार उपयोग के लिए तैयार रखता है। यह मेमोरी खपत को बचाने और चक्रों की गणना करने का एक शानदार तरीका है।

भाग 8: इटरेटर

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

भाग 9: आलसी लोड हो रहा है

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

भाग 10: सेवा लोकेटर

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

भाग ११: मॉड्यूल

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

भाग 12: प्रेक्षक

पर्यवेक्षक पैटर्न वह है जहां एक आवेदन के निष्पादन के दौरान एक घटना श्रोता को एक निश्चित बिंदु पर सेट किया जाता है। एप्लिकेशन के अन्य घटक इस ईवेंट श्रोता में "हुक" कर सकते हैं और इस बिंदु के दौरान उनके कोड को निष्पादित कर सकते हैं।

भाग 13: सक्रिय रिकॉर्ड

ऑब्जेक्ट डेटाबेस तालिका में एक पंक्ति का प्रतिनिधित्व करते हैं। इन ऑब्जेक्ट्स में ऐसे गुण होने चाहिए जो तालिका की संरचना का प्रतिनिधित्व करने वाले कॉलम और डेटाबेस में इन गुणों के संशोधनों की अनुमति देने के तरीकों को दर्शाते हैं।

Magento द्वारा पैटर्न का उपयोग

Mage_Core_Model_Abstract वर्ग के बाद विरासत में मिली कक्षाओं में लोड, (), सेव () और डिलीट () तरीके होते हैं जो लोड करने, संशोधन करने, बनाने या हटाने की अनुमति देते हैं कि जिस वर्ग के साथ क्लास जुड़ी हुई है। इसके अतिरिक्त, Mage_Core_Model_Abstract वर्ग Varien_Object से विरासत में मिला है, जो हमें वास्तव में जादुई तरीकों __set () और __get () तक पहुंच प्रदान करता है जो किसी डेटाबेस तालिका में स्तंभों की स्वचालित मैपिंग के लिए जिम्मेदार हैं जो किसी दिए गए ऑब्जेक्ट के गुणों के साथ हैं।

जोड़ मैगेंटो २

सेवा अनुबंध डिजाइन पत्र

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

सेवा अनुबंध, Magento की प्रतिरूपकता को बढ़ाता है। Magento के आसान उन्नयन के लिए व्यापारियों की सहायता करता है अच्छी तरह से परिभाषित और टिकाऊ एपीआई सुनिश्चित करें कि अन्य बाहरी और Magento मॉड्यूल लागू होते हैं। REST या SOAP इंटरफेस के माध्यम से व्यावसायिक तर्क को उजागर करने का एक आसान तरीका प्रदान करें।

उद्देश्य प्रबंधक

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

इंजेक्शन योग्य वस्तुएं

उनकी अपनी पहचान नहीं है जैसे कि EventManager, CustomerAccountManagementService।

नॉन-इंजेक्टेबल ओब्जक्ट्स

जैसे कि ग्राहक, उत्पाद आदि। इन संस्थाओं की अपनी पहचान और स्थिति होती है, क्योंकि उनकी अपनी पहचान होती है, यह जानना महत्वपूर्ण है कि हमें किस इकाई के लिए सटीक कार्य करना है।

निर्भरता अन्तःक्षेपण

यह Magento 1. में Mage के लिए एक विकल्प है। यह आंतरिक रूप से बनाने के बजाय बाहरी वातावरण के माध्यम से निर्भर वस्तु को इंजेक्ट करने की अवधारणा है। इस प्रकार हम संसाधन के लिए पूछ रहे हैं जब हमारी वस्तु को जरूरत पड़ने पर संसाधन बनाने के बजाय बनाया जा रहा हो। यह भविष्य में संशोधन में मदद करता है और आवश्यक वस्तुओं का मजाक उड़ाकर परीक्षण बहुत आसान हो जाता है।

फैक्टरी पैटर्न या फैक्टरी क्लास:

Magento 2 में फैक्ट्री कक्षाएं ऑब्जेक्ट मैनेजर और बिजनेस कोड के बीच एक परत बनाती हैं। फ़ैक्टरी कक्षाओं को स्पष्ट रूप से परिभाषित करने की आवश्यकता नहीं है क्योंकि वे ऑटो-जेनरेट किए गए हैं। हमें गैर-इंजेक्शन योग्य वस्तुओं के लिए कारखाना वर्ग बनाना चाहिए।

PROXY पत्र

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

निम्नलिखित कोड देखें: -

Magento\Catalog\Model\Product\Attribute\Source\Status\Proxy

Magento\Catalog\Model\Product\Link\Proxy

इसलिए उपरोक्त कोड में, हम कैटलॉगप्रोडक्टस्टैटस और प्रोडक्टलिंक के लिए प्रॉक्सी कक्षाओं का उपयोग कर रहे हैं। जब हम दौड़ते हैं

 php bin/magento setup:di:compile 

Magento कुछ निश्चित सम्मेलनों के साथ di.xml का उपयोग करके मक्खी पर प्रॉक्सी कक्षाएं बनाता है, इस प्रकार मूल वस्तु की जगह एक प्रॉक्सी क्लास ऑब्जेक्ट को प्रतिस्थापित करता है। अब हम अपने प्रॉक्सी वर्ग को देखते हैं कि यह कैसे काम कर रहा है

प्रॉक्सी के निर्माण के दौरान कुछ सामान्य सम्मेलन मैगनेटो का अनुसरण करते हैं: -

  • प्रॉक्सी वर्ग के नाम स्थान मूल के समान होंगे (Magento \ कैटलॉग \ मॉडल \ उत्पाद \ गुण \ स्रोत \ स्थिति)
  • प्रॉक्सी क्लास केवल एक ऑब्जेक्ट यानी ऑब्जेक्ट मैनेजर का विस्तार करता है
  • __Sleep, __wake जैसे जादू के कार्य हैं, जो केवल निश्चित कार्रवाई और कार्य पर लगाए जाते हैं जैसे कि __clone मूल कक्षा का एक ऑब्जेक्ट बना देगा और केवल तभी वस्तु प्रदान करेगा जब इसकी आवश्यकता होगी ( आलसी लोडिंग डिज़ाइन पैटर्न का उपयोग करना , इस प्रकार सुधार करना आवेदन का प्रदर्शन https://devdocs.magento.com/guides/v2.0/extension-dev-guide/proxies.html

प्लगइन्स (इंटरसेप्टर)

अवलोकन

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

एक सार्वजनिक विधि के व्यवहार को बाधित करने और बदलने की इच्छा रखने वाले एक्सटेंशन एक प्लगइन वर्ग बना सकते हैं जिसे प्लगइन्स के रूप में संदर्भित किया जाता है।

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

सीमाएं

प्लगइन्स का उपयोग निम्नलिखित में से किसी के साथ नहीं किया जा सकता है:

  • अंतिम विधियाँ
  • अंतिम कक्षाएं
  • गैर-सार्वजनिक तरीके
  • स्थैतिक तरीके
  • __construct
  • आभासी प्रकार
  • Magento \ फ्रेमवर्क \ अवरोधन से पहले त्वरित किया गया ऑब्जेक्ट बूटस्ट्रैप्ड है
  • ऑब्जेक्ट जो ObjectManager द्वारा त्वरित नहीं हैं (उदाहरण के लिए सीधे नए का उपयोग करके)। https://devdocs.magento.com/guides/v2.0/extension-dev-guide/plugins.html

ObjectManager

अवलोकन

बड़े एप्लिकेशन, जैसे कि मैगेंटो एप्लिकेशन, ऑब्जेक्ट ऑब्जेक्ट का उपयोग बायलरप्लेट कोड से बचने के लिए करते हैं जब तात्कालिकता के दौरान वस्तुओं की रचना करते हैं।

Magento के ढांचे में, ObjectManagerInterface का कार्यान्वयन एक वस्तु प्रबंधक के कर्तव्यों का पालन करता है।

जिम्मेदारियों

ऑब्जेक्ट प्रबंधक में निम्नलिखित जिम्मेदारियां होती हैं:

कारखानों और समीपवर्ती क्षेत्रों में वस्तु निर्माण। अनुरोध करने पर एक ही वर्ग के समान साझा उदाहरण को वापस करके सिंगलटन पैटर्न को लागू करना। जब एक निर्माणकर्ता अपने इंटरफेस का अनुरोध करता है, तो पसंदीदा वर्ग को तत्काल करके निर्भरता प्रबंधन। क्लास कंस्ट्रक्टरों में स्वचालित रूप से तत्काल पैरामीटर। https://devdocs.magento.com/guides/v2.0/extension-dev-guide/object-manager.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.