के माध्यम से कार्यान्वयन विवरण का खुलासा करना मेरे पास एक कक्षा है, जिसमें एक बड़ी डेटा संरचना में कुछ विवरण हैं, इस पर कुछ गणना करने के लिए एल्गोरिदम स्वीकार करते हैं, डेटा संरचना में इनपुट मान्य करने के तरीके हैं। लेकिन फिर मैं डेटा संरचना वापस करना चाहता हूं, ताकि इसे व्यू मॉडल द्वारा विभिन्न आउटपुट फॉर्म (स्ट्रिंग/सी # डेटाटेबल/कस्टम फ़ाइल आउटपुट) में परिवर्तित किया जा सके।ओओ डिज़ाइन - इंटरफ़ेस
class MyProductsCollection {
private IDictionary<string, IDictionary<int, ISet<Period>>> products;
// ctors, verify input, add and run_algorithm methods
}
मुझे पता है कि आप उपयोग करना डिजाइन सिद्धांत "इंटरफेस नहीं कार्यान्वयन पर निर्भर करते हैं" अपेक्षा की जाती है, तो मैं वर्ग के लिए एक इंटरफेस बनाना चाहते हैं।
मैं निम्नलिखित इंटरफ़ेस लिखने से कैसे बच सकता हूं? कारण यह कार्यान्वयन के विवरण का खुलासा करेगा और उसी फॉर्म को वापस करने के लिए किसी अन्य ठोस कार्यान्वयन को बांध देगा।
interface IProductsCollection {
IDictionary<string, IDictionary<int, ISet<IPeriod>>> GetData();
// other methods
}
कैसे मैं आसानी से डेटा संरचना पर पुनरावृति साफ इसे इस तरह प्रकट किए बिना आउटपुट की विभिन्न किस्मों के रूप में कर सकते हैं?
संपादित करें:
के बाद से वर्ग निर्माता में IFunc<IDictionary<string, IDictionary<int, ISet<IPeriod>>>>
में ले जाता है डेटा संरचना पर पुनरावृति और गणना करने के लिए, मैं इसे एक और IFunc
है, जो चल रहा गणना के बजाय उत्पादन बनाएगी साथ आपूर्ति कर सकता है। हालांकि, मुझे नहीं पता कि मैं कंक्रीट क्लास कन्स्ट्रक्टर से इसे कैसे कर सकता हूं।
एक अमूर्त वर्ग और आभासी विधियों का उपयोग करें। सार वर्ग भी * इंटरफेस * हैं। – pasty