2012-07-16 6 views
5

मेरे पास एक बहुत ही सरल एप्लिकेशन है जिसके लिए डेटा स्रोत की आवश्यकता है। वर्तमान में यह एक सपाट फ़ाइल है लेकिन बाद में यह डेटाबेस में बदल जाएगी। मुझे विरासत या इंटरफेस का उपयोग करने पर आपकी राय चाहिए। कौन सा बेहतर होगा और क्यों? मेरी राय इंटरफेस का उपयोग कर रही है क्योंकि यह लचीला होगा लेकिन फिर मैं डेटा स्रोत को एक अमूर्त वर्ग के रूप में भी बना सकता हूं।जावा में विरासत या इंटरफेस का उपयोग करने के लिए केस?

उत्तर

8

आप एक अमूर्त वर्ग का उपयोग करेंगे जहां सामान्य कार्यक्षमता है कि सभी कार्यान्वयनों तक पहुंच की आवश्यकता है। यहां डेटाबेस और फ़ाइल कार्यान्वयन बहुत अलग हैं, उनके पास कुछ भी सामान्य नहीं होगा, इसलिए मैं इंटरफेस के साथ जाऊंगा।

+0

लेकिन क्या यह अभी भी एक इंटरफ़ेस के रूप में डेटा स्रोत बनाने के लिए समझ में आता है, तो फ़ाइलडेटा स्रोत इसे कार्यान्वित करता है? – Phoenix

+0

@ जोनिक्स: मैं जो भी पूछ रहा हूं उसे प्राप्त नहीं कर रहा हूं। यदि आपके पास पाठ्यक्रम का इंटरफेस है तो इसे कुछ कार्यान्वित करना होगा। –

2

आप एक इंटरफ़ेस का उपयोग करते हैं जब डेटा तक पहुंचने के लिए केवल विधियां और प्रकार समान रहेंगे। आप विरासत का उपयोग करते हैं जब उन चीज़ों के बीच सामान्य कोड/कार्यक्षमता भी होगी जिन्हें साझा करने की आवश्यकता है।

इस मामले में, ऐसा लगता है कि एक इंटरफेस पर्याप्त होगा और एक सामान्य कोड के साथ एक अमूर्त वर्ग का उपयोग करना कचरा होगा। इंटरफ़ेस का उपयोग करने का अक्सर भूल गया लाभ यह है कि आप एक साथ कई इंटरफेस लागू कर सकते हैं जबकि आप केवल एक अभिभावक वर्ग से ही प्राप्त कर सकते हैं।

0

इस मामले में, यह एक इंटरफ़ेस का उपयोग करने के लिए और अधिक सुविधाजनक होगा।

कार्यान्वयन विवरणों का सारण करके, आप एक सामान्य इंटरफ़ेस प्रदान कर सकते हैं कि समर्थित फ्लैट-फ़ाइल और डेटाबेस दोनों का उपयोग कर सकते हैं। जब यह बदलने का समय आता है, तो केवल इस इंटरफ़ेस को लागू करने का कोड बदल जाएगा और कोई भी कोड उनका उपयोग नहीं करेगा।

0

मैं एक अमूर्त वर्ग के साथ जाऊंगा। एक शुद्ध वस्तु उन्मुख दृष्टिकोण के बारे में जाकर, कक्षा बहुत छोटी होगी, केवल आवश्यकताएं, और उसके बाद बच्चे वर्गों में वस्तुओं के लिए सभी पैरामीटर और मूल्य होते हैं।

अद्वितीय आईडी के लिए आपको int पर योजना बनाने के लिए तैयार करने के लिए अमूर्त वर्ग में क्या होगा, इसका एक उदाहरण है।

0

जैसा कि आपने अपनी पोस्ट में उल्लेख किया है, यह एक इंटरफ़ेस बनाना सर्वोत्तम होगा जो आपके डेटा स्रोत पर किए जा सकने वाले संचालन को परिभाषित करता है। प्रत्येक एकल डेटा स्रोत के लिए आप एक वर्ग बना सकते हैं जो उस इंटरफ़ेस को लागू करता है।

एक फ्लैट फ़ाइल पर काम करने के लिए आप कक्षा FileDataWrapper implements DataWrapper को लागू कर सकते हैं, जहां क्लास FileDataWrapper डेटा स्रोत पर किए जा सकने वाले संचालन को लागू करता है। बाद में, जब आप किसी डेटाबेस में बदलते हैं, तो बस कक्षा DatabaseDataWrapper implements DataWrapper को लागू करें।

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