मैं एक ऐसी प्रणाली तैयार कर रहा हूं जिसमें एक सरल इकाई फ्रेमवर्क समर्थित डोमेन ऑब्जेक्ट है जिसमें फ़ील्ड को नियमों की श्रृंखला के आधार पर अद्यतन करने की आवश्यकता है - मैं इन्हें कार्यान्वित करना चाहता हूं नियम प्रगतिशील (एक चुस्त शैली में) और जैसा कि मैं ईएफ का उपयोग कर रहा हूं, मैं प्रत्येक नियम को डोमेन ऑब्जेक्ट में डालने के बारे में संदेह करता हूं। हालांकि, मैं "प्रक्रियात्मक कोड" लिखने और एनीमिक डोमेन मॉडल का उपयोग करना चाहता हूं। यह सब भी टेस्ट करने योग्य होना चाहिए।नियमों के रूप में व्यवसाय तर्क के साथ एनीमिक डोमेन मॉडल से कैसे बचें
उदाहरण के लिए, वस्तु है:
class Employee {
private string Name;
private float Salary;
private float PensionPot;
private bool _pension;
private bool _eligibleForPension;
}
मैं जैसे नियमों का निर्माण करने की जरूरत है "अगर वेतन 100,000 से अधिक है और _eligibleForPension है झूठी तो _eligibleForPension सेट के रूप में सच" और "अगर _pension तो सच है _eliableForPension को सत्य के रूप में सेट करें "।
लगभग 20 ऐसे नियम हैं और मैं सलाह ले रहा हूं कि उन्हें कर्मचारी वर्ग में या कर्मचारी नियम वर्ग की तरह कुछ लागू किया जाना चाहिए? मेरा पहला विचार "नियम" से विरासत में प्राप्त प्रत्येक नियम के लिए एक अलग वर्ग बनाना था और फिर प्रत्येक वर्ग को कर्मचारी वर्ग में लागू करना, शायद विज़िटर पैटर्न का उपयोग करना था, लेकिन मुझे ऐसा करने के लिए नियमों के सभी क्षेत्रों को बेनकाब करना होगा ताकि यह गलत लगता है। कर्मचारी वर्ग पर प्रत्येक नियम होने के बावजूद यद्यपि सही नहीं लगता है। इसे कैसे लागू किया जाएगा?
दूसरी चिंता यह है कि वास्तविक कर्मचारी डीबी को समर्थित इकाई फ्रेमवर्क इकाइयां हैं, इसलिए मुझे इन "संस्थाओं" में तर्क जोड़ने में खुशी नहीं है - खासकर जब मुझे प्रत्येक नियम इकाई परीक्षण के लिए ऑब्जेक्ट्स का नकल करने की आवश्यकता होती है। मैं उन पर नकल कैसे कर सकता हूं यदि उनके पास नियम हैं जो मैं एक ही वस्तु पर परीक्षण कर रहा हूं?
मैं नियम लागू करने से पहले एक सरल डोमेन ऑब्जेक्ट में कनवर्ट करने के लिए ऑटोमैपर का उपयोग करने के बारे में सोच रहा हूं लेकिन फिर फ़ील्ड को अपडेट प्रबंधित करने की आवश्यकता है। इस पर कोई सलाह भी?
यह लगता है कि यह करना होगा छल। हालांकि मैंने निजी क्षेत्रों के साथ एक उदाहरण दिया, जो मेरा वांछित डिज़ाइन है, ईएफ में सार्वजनिक गुण हैं इसलिए यदि मैं सीधे कर्मचारी वर्ग तक पहुंचता हूं तो मुझे आंतरिक कक्षाओं का उपयोग नहीं करना पड़ेगा। मैं इस सवाल को थोड़ा सा खोलने जा रहा हूं उम्मीद है कि कोई ईएफ भागों सहित प्रश्न का उत्तर दे सकता है। धन्यवाद! – PCurd
मैंने थोड़ा संशोधित दृष्टिकोण का उपयोग कर सिस्टम का डेमो मॉडल बनाया - मेरे पास आंतरिक कक्षाओं के नियम नहीं हैं - और यह काम करता है और अच्छा लगता है। मुझे इस प्रणाली के बारे में पता है कि खेतों में सार्वजनिक होना एक भयानक अपराध नहीं है, लेकिन मैं आंतरिक वर्गों का उपयोग करके फिर से कोशिश कर सकता हूं कि यह कैसा महसूस करता है। आपकी सहायता के लिए धन्यवाद. – PCurd