oop - Should logic regarding an user's actions history be placed inside or outside the domain? -
यह 4 मॉडल के साथ मॉडल लिखें:
एक्स-एक्स अंतराल में x बार की तुलना में स्टोर का दौरा करने वाले किसी भी क्लाइंट को ब्लॉक / प्रतिबंध की आवश्यकता है ।
मुझे इस तर्क को कहां रखना चाहिए? अगर यह डोमेन परत में होना चाहिए, तो क्या मैं सिर्फ इस तर्क के लिए एक ClientStoreVisitHistory इकाई बनाना चाहिए? या क्या मुझे इस तर्क को डोमेन के बाहर रखना चाहिए?
आप जिस प्रतिबंध के बारे में बात कर रहे हैं वह स्पष्ट रूप से संबंधित है समस्या डोमेन के लिए और वहां मॉडल होना चाहिए। मैं इसके लिए कोई भी नई कक्षा नहीं बनाऊँगा और ऑब्जेक्ट स्टोर के विज़िटर्स में इस तर्क को बदलूंगा। जैसा कि यह सीधे स्टोर के दौरे को संभालता है और दो तर्क (ग्राहक और स्टोर) को स्वीकार करता है, आप इस तरह के किसी नए निर्भरता या नए वर्गों को इस तरीके से जोड़ नहीं सकते हैं और इस यात्रा का मूल्यांकन करने के लिए सभी आवश्यक जानकारी तक पहुंच सकते हैं।
ध्यान दें ... यदि आप समस्या डोमेन के मॉडल वर्ग हैं, तो मैं संस्थाओं को बेहतर निर्दिष्ट करने और कुछ तरीकों को जोड़ने के लिए संस्थाओं की आईडीिंग (वे मान ली जाती है और मॉडल साफ है) का सुझाव नहीं देता है। जिस तरह से आपने इसे किया था, वह डीबी डिजाइन की तरह अधिक दिखता है।
अद्यतन (टिप्पणियों के बाद)
एक अलग "स्टोरस्वीइट लिमिटस्स्पिपिफिकेशन"? ??? इकाई समझ में आता है कि अगर कुछ विशेषताओं (वर्तमान में क्लाइंट वाइट्स लिमिट और दिनों इंटरफ़ेल्फ़फ्रेंसविट्स लिमिट) से अधिक की आवश्यकता है। यदि आप उम्मीद करते हैं कि भविष्य में इस इकाई का विकास होगा तो यह एक अलग वर्ग के रूप में होना उचित होगा। यदि आप मौजूदा संस्करण स्थिर होने की उम्मीद करते हैं, तो यह भी एक वर्ग में सभी के लिए स्वीकार्य है।
और निम्नलिखित के बारे में:
StoreRecentVisitActivity Entity समूह संग्रह StoreVisitLimitSpecification के लिए। StoreVisitLimitSpecification के अंदर की जांच करें कि क्या एक ब्लॉक / प्रतिबंध उत्पन्न करता है: यदि ग्राहक ने StoreVisit बनाया है, तो उसे हर बार स्टोर रियरेंट विज़िट में एक्स बार देखा गया है।
- I don? नहीं लगता कि यह एक अच्छा विचार है StoreRecentVisitActivity वर्ग पूरी तरह से बेमानी है, क्योंकि StoreVisit पहले से ही यात्रा इतिहास रखती है। हम अपने डोमेन मॉडल को सरल और छोटा रखना चाहते हैं
- मैं निश्चित रूप से StoreVisitLimitSpecification के अंदर ब्लॉक / प्रतिबंध की जांच करने से बचूंगा जैसा कि इसके नाम से पता चलता है, यह एक सहायक, विनिर्देशन वर्ग है और पूरी तरह से निष्क्रिय होना चाहिए, बिना किसी तर्क के और केवल बाहर से पूछे जाने पर। इसलिए किसी भी तरह की मान्यता के लिए खुद को जिम्मेदार नहीं होना चाहिए। जैसा कहा गया है, मैं StoreVisit constructor या अंत में (यदि बहुत जटिल) StoreVisit के एक अलग हेल्पर वर्ग में यह तर्क रखा होगा। इसे स्टोर क्लास के माध्यम से प्राप्त किया जा सकता है (जैसा कि यह स्टोर से है)।
यह मुझे डोमेन मॉडल के लिए मेरी सिफारिश करेगा:
![]()
और यहां एक अनुक्रम आरेख है जो एक नया स्टोर विज़िट बनाने की प्रक्रिया दिखा रहा है:
![]()
मुझे यह कॉम्पैक्ट, सरल और स्पष्ट लगता है। स्टोर विज़िट की यात्रा के इतिहास के सभी आंकड़े हैं और इसलिए अतिरिक्त वर्गों की निर्भरता के बिना इसे एक्सेस कर सकते हैं। स्टोर ने सीमाओं के एसपीईसी के संदर्भ रखे हैं और यह स्टोर की अनुमति के लिए अनुरोध पर देता है।
Comments
Post a Comment