के साथ फैक्टरी का उपयोग करना ठीक है, इसलिए मुझे एक असाइनमेंट दिया गया है जहां मुझे रणनीति और फैक्टरी डिजाइन पैटर्न दोनों का उपयोग करने के लिए कहा जाता है। यहां समस्या है:रणनीति डिजाइन पैटर्न
आप ऋण को संभालने के लिए उपयोग करने के लिए बैंक के लिए एक आवेदन विकसित कर रहे हैं। capital()
विधि के साथ Loan
कक्षा है। capital()
विधि में एक बदसूरत अगर-फिर-और सशर्त होता है जो कुछ ऋण ऑब्जेक्ट आवृत्ति विशेषताओं की जांच करता है और गुणों के आधार पर ऋण प्रकार के लिए सही रणनीति का उपयोग करता है।
capital() {
if (expiry == null && maturity != null) {
// Find capital for term loan
return commitment * duration * riskFactor;
}
if (expiry != null && maturity == null) {
if (getUnusedPercentage() != 1.0) {
// Find capital for revolving loan
return commitment * unusedPercentage * duration * riskFactor;
} else {
// Find capital for complex loan
return (outstandingRiskAmount * duration * riskFactor) + (unusedRiskAmount * duration * unusedRiskFactor);
}
}
}
हम इस डिज़ाइन को रणनीति पैटर्न लागू करने के लिए चाहते हैं: यहाँ capital()
विधि के लिए छद्म-कोड है। ऐसी फैक्ट्री बनाएं जो उचित रणनीति वस्तु बनाती है। फैक्ट्री को सिंगलटन क्लास बनाएं। एक यूएमएल आरेख बनाएं और capital()
विधि को प्रतिस्थापित करने के लिए सामना करने वाले स्निपेट लिखें। याद रखें: एक रणनीति का उपयोग करने के बारे में महत्वपूर्ण बात: क्लाइंट को एक संदर्भ वस्तु प्रदान करनी चाहिए।
ठीक है, इसलिए मैंने एक यूएमएल आरेख तैयार किया है। मैं सिंगलटन की मेरी समझ पर बहुत ठोस हूं इसलिए मुझे लगता है कि मुझे वह पेट मिला है। मुझे लगता है कि मैं रणनीति को अच्छी तरह से समझता हूं। हालांकि, मुझे अपने आप को यह विश्वास करने में परेशानी हो रही है कि कारखाने के साथ मेरे पास सेटअप रणनीति वस्तुएं बनाने के लिए इस बारे में जाने का सबसे अच्छा तरीका है। Check out my diagram here। मैं एक क्लाइंट ऑब्जेक्ट लिखने की योजना बना रहा हूं जो ऋण का उपयोग संदर्भ वस्तु के रूप में ऋण का उपयोग करता है (इसे कारखाने के साथ बनाकर ऋण कन्स्ट्रक्टर के माध्यम से उपयुक्त रणनीति के साथ शुरू करना)। capital()
विधि तब बस उस रणनीति को निष्पादित करेगी जिसके साथ इसे कॉन्फ़िगर किया गया है। अगर मेरी समझ सही है, तो जिस तरह से मेरे पास कारखाने की स्थापना की गई है, वह इंडेक्शन की एक परत जोड़कर रणनीति से ऋण (संदर्भ) को पूरी तरह से खत्म करने की सेवा कर रहा है।
एक बात मुझे यकीन नहीं है कि मूल पूंजी विधि के अंदर होने वाली गणना के दौरान उपयोग किए जाने वाले डेटा को कैसे प्राप्त किया जाए। कुछ रणनीतियों के लिए केवल कुछ पैरामीटर का उपयोग किया जाता है (टर्म लोन के लिए केवल प्रतिबद्धता, अवधि, और जोखिम फैक्टर का उपयोग किया जाता है, हालांकि जटिल ऋण ऋण के सभी उपलब्ध विशेषताओं का उपयोग करते हैं)। क्या मेरी calculateCapital()
विधि, जो सभी रणनीतियों द्वारा कार्यान्वित की गई है, में सभी छह गुण पैरामीटर के रूप में हैं?
बेहतर परिणाम प्राप्त करने के लिए रणनीति पैटर्न के साथ फैक्टरी का उपयोग करने का एक बेहतर तरीका है? क्या मुझे इसके बजाय सार फैक्ट्री या फैक्टरी विधि का उपयोग करना चाहिए?
कारखाने उपयुक्त रणनीति बनाना चाहिए:
और सवाल होगा ...? – Isaac
शायद संबंधित: http://stackoverflow.com/questions/5375187/strategy-design-pattern-and-factory-method-design-pattern। भी: http: //www.codeproject।कॉम/लेख/9942/रिफैक्टरिंग-टू-पैटर्न-फैक्ट्री-एंड-स्ट्रैटेजी-पेटी और http://social.msdn.microsoft.com/Forums/is/architecturegeneral/thread/8218054d-969c-4066-ba05-24553f890465 –