डेटा सत्यापन के लिए डिज़ाइन पैटर्न


23

इस समस्या के लिए सबसे अच्छा डिज़ाइन पैटर्न क्या होगा:

मेरे पास एक ऑब्जेक्ट ए। ऑब्जेक्ट है जिसे उपयोगकर्ता के अनुरोध के आधार पर डेटाबेस से पंजीकृत या हटाया जा सकता है।

ऑब्जेक्ट के पंजीकरण या विलोपन से पहले डेटा सत्यापन किया जाता है। ऑब्जेक्ट को पंजीकृत करने से पहले जांचे जाने वाले नियमों का एक सेट है और हटाने के लिए नियमों का एक और सेट है। इनमें से कुछ नियम दोनों के संचालन के लिए सामान्य हैं।

अब तक, मुझे लगता है कि चेन ऑफ़ रिस्पॉन्सिबिलिटी डिज़ाइन पैटर्न सबसे फिट बैठता है लेकिन मुझे इसे लागू करने में परेशानी हो रही है।


6
आपको क्या लगता है कि चेन ऑफ़ रिस्पॉन्सिबिलिटी डिज़ाइन पैटर्न सबसे अच्छा क्यों है?
एडम जुकरमैन

जवाबों:


17

आम तौर पर मैं प्रत्येक उपयोग के मामले को मान्य करने के लिए एक अलग सत्यापनकर्ता वर्ग का उपयोग करूंगा। उदाहरण के लिए, डेटाबेस में उत्पाद जोड़ने से पहले, मैं व्यापार नियम को मान्य करने के लिए AddProductValidator का उपयोग करूँगा, उत्पाद को हटाने से पहले, मैं DeleteProductValidator को मान्य करने के लिए उपयोग करूँगा, आदि सामान्य व्यवसाय नियम को विनिर्देश वर्ग (विनिर्देश पैटर्न) में निकाला जा सकता है और सत्यापनकर्ता कक्षाओं में साझा किया जा सकता है

सत्यापनकर्ता वर्ग की संरचना करने के लिए, मैं यहाँ दृष्टिकोण का पालन करता हूँ: http://lostechies.com/jimmybogard/2007/10/24/entity-validation-with-visitors-and-extension-methods/

यदि आप .NET का उपयोग करते हैं, तो मुझे लगता है कि आप धाराप्रवाह सत्यापन ( https://github.com/JeremySkinner/FluentValidation ) पर विचार करना चाह सकते हैं । मुझे लगता है कि यह काफी अच्छा है और ऊपर वर्णित लेख के काफी करीब है


1
धाराप्रवाह मान्यता के नए url: github.com/JeremySkinner/FluentValidation
बृज

4

जैसा कि वर्णित है, मैं शायद एक विकल्प प्रकार लागू करूंगा । इस तरह मैं एक "कोई नहीं" या एक वैध मूल्य (शायद आलसी) वापस कर सकता हूं लेकिन यह एक कार्यान्वयन विवरण है और एक डेकोरेटर का उपयोग करने के विचार को अच्छी तरह से ले जाता है ।

डेकोरेटर पैटर्न

बेशक अगर इंटरफ़ेस बदसूरत हो जाता है तो मैं एक मुखौटा का उपयोग करूंगा ।


डेकोरेटर काम करेगा, लेकिन मैं आमतौर पर डेकोरेटर पैटर्न के बारे में सोचता हूं, जब आप आउटपुट को उपयोग करने के लिए किसी अन्य वर्ग के इनपुट में बदलना चाहते हैं। इस मामले में आप बस सत्यापन करेंगे। मुझे लगता है कि जिम्मेदारी की श्रृंखला बेहतर imho काम कर सकती है।
नील
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.