मेरे पास एक बहुत ही सरल एप्लिकेशन है जिसके लिए डेटा स्रोत की आवश्यकता है। वर्तमान में यह एक सपाट फ़ाइल है लेकिन बाद में यह डेटाबेस में बदल जाएगी। मुझे विरासत या इंटरफेस का उपयोग करने पर आपकी राय चाहिए। कौन सा बेहतर होगा और क्यों? मेरी राय इंटरफेस का उपयोग कर रही है क्योंकि यह लचीला होगा लेकिन फिर मैं डेटा स्रोत को एक अमूर्त वर्ग के रूप में भी बना सकता हूं।जावा में विरासत या इंटरफेस का उपयोग करने के लिए केस?
उत्तर
आप एक अमूर्त वर्ग का उपयोग करेंगे जहां सामान्य कार्यक्षमता है कि सभी कार्यान्वयनों तक पहुंच की आवश्यकता है। यहां डेटाबेस और फ़ाइल कार्यान्वयन बहुत अलग हैं, उनके पास कुछ भी सामान्य नहीं होगा, इसलिए मैं इंटरफेस के साथ जाऊंगा।
आप एक इंटरफ़ेस का उपयोग करते हैं जब डेटा तक पहुंचने के लिए केवल विधियां और प्रकार समान रहेंगे। आप विरासत का उपयोग करते हैं जब उन चीज़ों के बीच सामान्य कोड/कार्यक्षमता भी होगी जिन्हें साझा करने की आवश्यकता है।
इस मामले में, ऐसा लगता है कि एक इंटरफेस पर्याप्त होगा और एक सामान्य कोड के साथ एक अमूर्त वर्ग का उपयोग करना कचरा होगा। इंटरफ़ेस का उपयोग करने का अक्सर भूल गया लाभ यह है कि आप एक साथ कई इंटरफेस लागू कर सकते हैं जबकि आप केवल एक अभिभावक वर्ग से ही प्राप्त कर सकते हैं।
इस मामले में, यह एक इंटरफ़ेस का उपयोग करने के लिए और अधिक सुविधाजनक होगा।
कार्यान्वयन विवरणों का सारण करके, आप एक सामान्य इंटरफ़ेस प्रदान कर सकते हैं कि समर्थित फ्लैट-फ़ाइल और डेटाबेस दोनों का उपयोग कर सकते हैं। जब यह बदलने का समय आता है, तो केवल इस इंटरफ़ेस को लागू करने का कोड बदल जाएगा और कोई भी कोड उनका उपयोग नहीं करेगा।
मैं एक अमूर्त वर्ग के साथ जाऊंगा। एक शुद्ध वस्तु उन्मुख दृष्टिकोण के बारे में जाकर, कक्षा बहुत छोटी होगी, केवल आवश्यकताएं, और उसके बाद बच्चे वर्गों में वस्तुओं के लिए सभी पैरामीटर और मूल्य होते हैं।
अद्वितीय आईडी के लिए आपको int
पर योजना बनाने के लिए तैयार करने के लिए अमूर्त वर्ग में क्या होगा, इसका एक उदाहरण है।
जैसा कि आपने अपनी पोस्ट में उल्लेख किया है, यह एक इंटरफ़ेस बनाना सर्वोत्तम होगा जो आपके डेटा स्रोत पर किए जा सकने वाले संचालन को परिभाषित करता है। प्रत्येक एकल डेटा स्रोत के लिए आप एक वर्ग बना सकते हैं जो उस इंटरफ़ेस को लागू करता है।
एक फ्लैट फ़ाइल पर काम करने के लिए आप कक्षा FileDataWrapper implements DataWrapper
को लागू कर सकते हैं, जहां क्लास FileDataWrapper डेटा स्रोत पर किए जा सकने वाले संचालन को लागू करता है। बाद में, जब आप किसी डेटाबेस में बदलते हैं, तो बस कक्षा DatabaseDataWrapper implements DataWrapper
को लागू करें।
आप डीएओ डिजाइन पैटर्न और फैक्टरी का उपयोग कर सकते हैं। आप Advanced DAO programming में और Core J2EE Patterns - Data Access Object में अधिक जानकारी प्राप्त कर सकते हैं।
- 1. जावा संग्रह इंटरफेस में विरासत
- 2. जावा इंटरफेस और विरासत
- 3. जावा इंटरफेस विरासत और विस्तार
- 4. इंटरफेस, एकाधिक विरासत बनाम इंटरफेस का उपयोग क्यों करें, इंटरफेस के लाभ?
- 5. क्या एआईडीएल इंटरफेस में विरासत का उपयोग करना संभव है?
- 6. इस विरासत idiosyncrasy के लिए उपयोग केस क्या है?
- 7. पर्ल और तर्क में इथ्रेड (दुभाषिया धागे) के लिए केस का उपयोग या उपयोग करने के लिए उपयोग करें?
- 8. आवश्यकता को पूरा करने के लिए इंटरफेस या सार कक्षा
- 9. स्कैला केस क्लास विरासत
- 10. राज्य पैटर्न का उपयोग करने या उपयोग करने के लिए?
- 11. एकाधिक विरासत के बजाय उपयोग करने के लिए डिज़ाइन पैटर्न
- 12. जावा में नरम संदर्भ के लिए उपयोग केस क्या है?
- 13. जावा का उपयोग [इंटरफेस/सार कक्षाएं]
- 14. इंटरफेस को लागू करने के लिए विशिष्ट पैटर्न का उपयोग
- 15. IDISposable के साथ इंटरफेस विरासत?
- 16. वैकल्पिक अनुमान के लिए केस का उपयोग
- 17. जावा में कमांड पैटर्न के लिए इंटरफेस
- 18. इंटरफेस में जेनिक्स का उपयोग
- 19. ईश्वर वस्तुओं को तोड़ने के लिए इंटरफेस विरासत?
- 20. जावा इंटरफेस के बारे में उलझन
- 21. meteor.js में विरासत का उपयोग
- 22. क्या मुझे जावा स्थिर चर घोषित करने के लिए ऊपरी-केस नामकरण का उपयोग करना चाहिए?
- 23. जावा अनुप्रयोग के लिए वेब उपयोगकर्ता इंटरफेस
- 24. विरासत में ग्रोवी/ग्रेइल्स का उपयोग जावा/जेएसपी वेब ऐप
- 25. PHP में स्विच केस 'या' का उपयोग कैसे करें?
- 26. जावा में मार्कर इंटरफेस का उपयोग क्या है?
- 27. आप जेनेरिक इंटरफेस पंजीकृत करने के लिए कैसल विंडसर - फ्लुएंट इंटरफेस का उपयोग कैसे करते हैं?
- 28. जावा में विरासत को प्रतिबंधित करने के अच्छे कारण?
- 29. कोर जावा में विरासत
- 30. तुलनित्र इंटरफेस में बराबर() विधि का उपयोग?
लेकिन क्या यह अभी भी एक इंटरफ़ेस के रूप में डेटा स्रोत बनाने के लिए समझ में आता है, तो फ़ाइलडेटा स्रोत इसे कार्यान्वित करता है? – Phoenix
@ जोनिक्स: मैं जो भी पूछ रहा हूं उसे प्राप्त नहीं कर रहा हूं। यदि आपके पास पाठ्यक्रम का इंटरफेस है तो इसे कुछ कार्यान्वित करना होगा। –