2012-06-03 15 views
11

मैं किस प्रकार के ढांचे/डिज़ाइन पैटर्न का उपयोग उस एप्लिकेशन के लिए करना चाहिए जिसका संभवतः 1000 से अधिक नियम नियम मान्य हैं?व्यापार नियम सत्यापन के लिए फ्रेमवर्क/डिज़ाइन पैटर्न

जिन प्रणालियों पर मैं काम कर रहा हूं उनमें बहुत से इनपुट फॉर्म शामिल हैं जो उपयोगकर्ताओं को प्रवेश करने की अनुमति देते हैं। प्रत्येक इनपुट फॉर्म में अलग-अलग अनुभाग होते हैं।

यानी फॉर्म ए में सेक्शन ए/बी/सी/डी है। फॉर्म बी में सेक्शन बी/सी/डी

इनमें से कुछ बिज़ नियम सत्यापन दोनों रूपों के लिए आम हैं, मैं नियमों का पुन: उपयोग करने के लिए एक दृष्टिकोण को देख रहा हूं।

मैं एक मजबूत व्यापार नियम सत्यापन ढांचे का निर्माण कैसे करूं?

+0

यह बहुत व्यापक प्रश्न है .. आपने क्या माना है? –

+1

1000 सत्यापन या 1000 नियम? नियम कितने जटिल हैं? वे कितनी बार बदलते हैं? उन्हें कितनी जल्दी बदलने की जरूरत है? परिवर्तन retroactive हैं? – meriton

+0

नियमों और सत्यापन के संयोजन। वे शायद ही कभी बदलते हैं, प्रत्येक नियम के लिए मुझे उपयोगकर्ताओं को एक त्रुटि संदेश वापस करने की आवश्यकता है। – youcanlearnanything

उत्तर

14
  • ढांचा विशेष रूप से व्यापार के नियमों का मूल्यांकन करने के लिए डिज़ाइन किया गया

  • ढांचे और की तरह गतिशील भाषाओं का उपयोग सेम लेखन अनुमति देता है। आप आसानी से JavaScript

  • strategy design pattern एक अच्छे फिट की तरह दिखते हैं: प्रत्येक नियम को एक अलग रणनीति के रूप में लागू करें और उन्हें एक के बाद चलाएं।

  • समान chain of responsibility पैटर्न इस्तेमाल किया जा सकता: प्रत्येक नियम या तो विफल रहता है या सफल होता है और Specification pattern है अगले शासन

+0

जब आप "प्रत्येक नियम को एक अलग रणनीति के रूप में लागू करें" का उल्लेख करते हैं तो उम्मीद है कि आप ओपी द्वारा वर्णित 1000 मान्यताओं में से प्रत्येक के लिए एक रणनीति वर्ग का सुझाव नहीं दे रहे हैं। वह काफी कक्षा विस्फोट होगा, है ना? या शायद इसके बजाय आप प्रति नियम एक अलग वर्ग उदाहरण का जिक्र कर रहे हैं। – Brady

+1

@ ब्रैडी: वास्तव में मैं ** ** ** एक नियम के लिए एक अलग वर्ग का मतलब है। प्रत्येक नियम के बाद एक नाम हो सकता है, यूनिट परीक्षण किया जा सकता है और सार्थक पैकेज में रखा जा सकता है। इसके अलावा शायद कुछ नियमों को जनरेट किया जा सकता है ताकि विभिन्न नियमों के साथ एक वर्ग कई नियमों के लिए उपयोग किया जा सके। अंत में कक्षाएं [टैग: स्कैला] और [टैग: ग्रोवी] जैसी भाषाओं में सस्ती (कोड की रेखाएं) हैं। और विकल्प क्या है? हजारों लाइन नियम नियमों के साथ एक वर्ग (मानते हैं कि एक नियम 1-2 लाइनों में फिट हो सकता है?) –

+0

टॉमसज़, मैं आपका बिंदु देखता हूं, मुझे लगता है कि आपके द्वारा जो उल्लेख किया गया है उसका संयोजन सबसे अच्छा होगा, विशेष रूप से कई नियमों को सामान्य बनाना एक या कुछ कक्षाएं। बेशक मैं सभी के लिए एक गन्दा वर्ग नहीं देखना चाहता, लेकिन फ्लिप-साइड पर मुझे नहीं लगता कि कक्षाओं के 1000s या तो इष्टतम होंगे। – Brady

5

एक अच्छा पैटर्न के नियंत्रण से गुजरता है व्यापार के नियम लागू करने के लिए। यह रणनीति, समग्र और इंटरप्रेटर का संयोजन है जो पैरामीटरयुक्त और आसानी से संयोज्य नियमों के लिए बना सकता है। Fowler और इवांस द्वारा original paper (pdf) पर भी देखें, और यदि आप कर सकते हैं डोमेन संचालित डिजाइन पर एक नज़र डालें।

+1

प्रत्येक नियम के लिए, मुझे एक संबंधित त्रुटि संदेश वापस करने की आवश्यकता है। विशिष्टता पैटर्न कैसे मदद कर सकते हैं? – youcanlearnanything

+0

सफलता ध्वज के साथ, त्रुटि संदेशों को विनिर्देश विधि से भी वापस किया जा सकता है। आप उन्हें "ऑपरेशन परिणाम" वर्ग में पैकेज कर सकते हैं और इसे 'isSisfisfied' विधि से वापस कर सकते हैं। –

+0

एक और ऑपरेशन रिसैट क्लास बनाएं जिसमें शायद एक सूची है जिसमें सभी उपयुक्त संदेश हैं? – youcanlearnanything

संबंधित मुद्दे