Salesforce में डिज़ाइन पैटर्न

परिचय

डिज़ाइन पैटर्न का उपयोग मुख्य रूप से हमारे कोड को कुशलतापूर्वक और प्रभावी ढंग से काम करने के लिए किया जाता है। यह किसी भी राज्यपाल की सीमा को रोकने में भी मदद करता है।

एक डिजाइन पैटर्न क्या है?

डिज़ाइन पैटर्न एक ऐसी समस्या का वर्णन करता है जो बार-बार होती है, मूल और समाधान के परिणाम। यह वास्तविक कार्यान्वयन विवरण प्रदान नहीं करता है।

Salesforce में विभिन्न प्रकार के डिज़ाइन पैटर्न

सेल्सफोर्स में सिंगलटन पैटर्न

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

नीचे कुछ परिदृश्य दिए गए हैं:

1. एप्लिकेशन कॉन्फ़िगरेशन रीडर

2. उपयोगिता वर्ग (जैसे गणित)

3. डेटाबेस के साथ कनेक्शन

4. लकड़हारा

उदाहरण:

एक कोड के साथ समस्या

अकाउंट पर ट्रिगर अकाउंट ट्रिगर (सम्मिलित करने से पहले, अपडेट से पहले) {के लिए (खाता accRec: Trigger.new) { AccountExampleRecordType aert = new AccountExampleRecordType (); accRec.recordTypeId = aert.Id; } } सार्वजनिक वर्ग AccountExampleRecordType { सार्वजनिक स्ट्रिंग आईडी {प्राप्त करें; निजी सेट;} सार्वजनिक AccountExampleRecordType(){ Id = Account.sObjectType.getDescribe()।getRecordTypeInfosByName() .get('Example').getRecordTypeId(); } }

 

उपरोक्त कोड में समस्या यह है कि यदि कई रिकॉर्ड डाले या अपडेट किए जाते हैं, तो हमें गवर्नर सीमा समस्या मिलेगी क्योंकि प्रत्येक रिकॉर्ड के लिए हर बार 'AccountExampleRecordType' ऑब्जेक्ट बनाया जाता है।

उपाय: सिंगलटन पैटर्न

सिंगलटन पैटर्न के साथ कार्यान्वित 'AccountExampleRecordType' हैंडलर वर्ग नीचे दिया गया है।

सार्वजनिक वर्ग AccountExampleRecordType {// वर्ग को संदर्भित करना निजी स्थैतिक AccountExampleRecordType उदाहरण = शून्य; // रिकॉर्ड प्रकार आईडी सार्वजनिक स्ट्रिंग आईडी {प्राप्त करें; निजी सेट;} // प्राइवेट कंस्ट्रक्टर रिकॉर्ड प्रकार की आईडी को इनिशियलाइज़ करता है Private AccountExampleRecordType(){ Id = Account.sObjectType.getDescribe().getRecordTypeInfosByName() .get('Example').getRecordTypeId(); } // एक स्थिर विधि जो रिकॉर्ड प्रकार सार्वजनिक स्थैतिक AccountExampleRecordType getInstance () का उदाहरण लौटाती है {// आलसी लोडिंग संस्करण अगर (उदाहरण == शून्य) {उदाहरण = नया खाता उदाहरण रिकॉर्ड टाइप (); वापसी उदाहरण; } } }

 

Salesforce में सजावटी पैटर्न

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

उदाहरण:

सार्वजनिक वर्ग ExpenseClassDecorator { सार्वजनिक सूची रूपांतरित व्यय {सेट; प्राप्त करें;} // कंस्ट्रक्टर सार्वजनिक व्यय क्लासडेकोरेटर () {सूची व्यय = [चयन आईडी, नाम, व्यय__सी से राशि__सी]; अगर (व्यय। आकार ()> 0) {रूपांतरित व्यय = नई सूची (); के लिए (व्यय__सी व्यय: व्यय) { ConvertExpenses.add (नया व्यय परिवर्तित (व्यय)); } } } } सार्वजनिक वर्ग के खर्चे रूपांतरित { डबल डॉलर टीओआईएनआर = 79.85; डबल डॉलर टोयूरो = 0.98 डबल डॉलर टोचफ = 0.97; सार्वजनिक स्ट्रिंग व्ययनाम {प्राप्त करें; सेट;} सार्वजनिक डबल expInDollar {प्राप्त करें; सेट;} सार्वजनिक डबल expInInr {प्राप्त करें; सेट;} सार्वजनिक डबल expInEuro {प्राप्त करें; सेट;} सार्वजनिक डबल expInChf {प्राप्त करें; सेट;} सार्वजनिक व्यय रूपांतरित (व्यय__सी व्यय){ व्ययनाम = व्यय। नाम; expInDollar = व्यय। राशि__c; expInInr = expInDollar * डॉलरToInr; expInEuro = expInDollar * डॉलरToEuro; expInChf = expInDollar * डॉलरToChf; } }

 

विजुअलफोर्स पेज सभी खर्चों को दिखाने के लिए

 

Salesforce में iTrigger फ़ैक्टरी पैटर्न

यह डिज़ाइन पैटर्न ट्रिगर को सामान्य करने और निष्पादन प्रवाह को नियंत्रित करने में मदद करता है। यह ट्रिगर तर्क को समाप्त करके इकाई परीक्षण को बहुत सरल बनाता है और लोगों के एक समूह को कई ट्रिगर वाले संगठन में काम करने में मदद करता है।

उदाहरण:

सार्वजनिक इंटरफ़ेस ItriggerPattern {शून्य से पहले सम्मिलित करें (सूची newRecords); अद्यतन से पहले शून्य (नक्शा newRec, मानचित्र oldRec); शून्य से पहले हटाएं (पुराने रिकॉर्ड्स को मैप करें); शून्य आफ्टरइन्सर्ट (नक्शा नया रिकॉर्ड); शून्य आफ्टरअपडेट (नक्शा नया रिकॉर्ड, नक्शा (पुराना रिकॉर्ड)); शून्य आफ्टरडिलीट (मानचित्र पुराने रिकॉर्ड); शून्य के बाद हटाना (पुराने रिकॉर्ड्स को मैप करें); बूलियन अक्षम है (); } सार्वजनिक वर्ग TriggerClass {सार्वजनिक स्थैतिक शून्य डेमो (ITriggerPattern pattHandler) {अगर (Trigger.isBefore) {if (Trigger.isInsert) pattHandler.BeforeInsert (trigger.new); if(Trigger.isUpdate) pattHandler.BeforeUpdate(trigger.newMap, trigger.oldMap); अगर (Trigger.isDelete) pattHandler.BeforeDelete(trigger.oldMap); } if(Trigger.isAfter){ if(Trigger.isInsert) pattHandler.AfterInsert(trigger.newMap); if(Trigger.isUpdate) pattHandler.AfterUpdate(trigger.newMap, trigger.oldMap); if(Trigger.isDelete) pattHandler.AfterDelete(trigger.oldMap); if(Trigger.isUnDelete) pattHandler.AfterDelete(trigger.oldMap); } } }

 

सेल्सफोर्स में रणनीति पैटर्न

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

उदाहरण:

सार्वजनिक इंटरफ़ेस भुगतान गेटवे {बूलियन पे (डबल एएमटी); } पब्लिक क्लास क्रेडिट कार्ड पेमेंट गेटवे को लागू करता है {स्ट्रिंग नाम; स्ट्रिंग कार्डनंब; स्ट्रिंग सीवीवी; तिथि डो; पब्लिक बूलियन पे (डबल एएमटी) {// रेस्ट एपीआई का उपयोग कर क्रेडिट कार्ड इंटरफेस}} पब्लिक क्लास mQuickPaymentStrategy पेमेंट गेटवे को लागू करता है {स्ट्रिंग ईमेल आईडी; पब्लिक बूलियन पे (डबल एएमटी) {// मोबिक्विक इंटरफेस रेस्ट एपीआई का उपयोग कर}}

 

सेल्सफोर्स में "एक ट्रिगर प्रति ऑब्जेक्ट" डिज़ाइन पैटर्न

सेल्सफोर्स द्वारा इसकी अत्यधिक अनुशंसा की जाती है और प्रत्येक ऑब्जेक्ट पर एक ट्रिगर लिखने के लिए भी एक अच्छा अभ्यास है क्योंकि यदि हम प्रत्येक ऑब्जेक्ट पर एकाधिक ट्रिगर लिखते हैं, तो संघर्ष और त्रुटियां हो सकती हैं क्योंकि ट्रिगर में निष्पादन का कोई क्रम नहीं है।

हम सहायक वर्ग से विभिन्न विधियों को लागू करने के लिए संदर्भ चर का उपयोग कर सकते हैं।

उदाहरण:

अकाउंट पर ट्रिगर अकाउंट ट्रिगर (इन्सर्ट के बाद, अपडेट के बाद) {if(Trigger.isAfter && Trigger.isInsert){ UpdateCase.caseMethod(Trigger.new); UpdateOpportunity.oppMethod(Trigger.new); } }

 

एक टिप्पणी छोड़ें

यह साइट स्पैम को कम करने के लिए अकिस्मेट का उपयोग करती है। जानें कि आपका डेटा कैसे संसाधित किया जाता है.