2011-01-26 22 views
10

क्या कोई मानक है कि इंटरफेस और उन वर्गों के संबंध में समाधान/परियोजनाओं का आयोजन कैसे किया जाता है? मैं एक एमवीपी, डीडीडी आवेदन पर काम कर रहा हूं और फीडबैक सुनना अच्छा लगेगा कि दूसरों ने अपनी परियोजनाओं को कैसे लेआउट किया और वे इस तरह क्यों करते हैं। धन्यवाद!!क्या इंटरफेस समान नामस्थान में लाइव कंक्रीट क्लासेस के रूप में उन्हें कार्यान्वित करना चाहिए?

उत्तर

10

उन्हें नामस्थान में रहना चाहिए जो उनके लिए तार्किक है; इसका मतलब है कि उनके पास एक ही नामस्थान में रहने के लिए कोई फर्म नियम नहीं है या नहीं। आप अपेक्षाकृत अमूर्त नामस्थान पाएंगे, अक्सर उनके कार्यान्वयन के साथ नहीं रहते हैं, जबकि इंटरफेस जो उनके कार्यान्वयनकर्ताओं के साथ अधिक 1: 1 होते हैं, वे एक-दूसरे के साथ रहने की संभावना रखते हैं।

एक और महत्वपूर्ण विचार है कि इंटरफेस को पुन: उपयोग के लिए उपभोग्य रखने के लिए - आमतौर पर इसका मतलब नामस्थानों के बजाय इंटरफेस के साथ असेंबली में क्या होता है, इसके बारे में अधिक विचार किया जाता है।

4

Separate Interfaces पर मार्टिन फाउलर के पैटर्न की जांच करें, इससे आपको यह तय करने में मदद मिल सकती है कि उन्हें कहां रखा जाए।

+1

+1 दिलचस्प, मैं ट्राइस को [निर्भरता उलटा सिद्धांत (पीडीएफ)] (http://www.objectmentor.com/resources/articles/dip.pdf) के रूप में जानता था। –

+0

इस स्थिति पर मेरा संदेह थोड़ा सा: http://stackoverflow.com/questions/5840219/why-should-we-place-interfaces-with-classes-that-use-them-rather-than-those- यह –

1

निश्चित रूप से ऐसा करने के लिए कोई अनिवार्य कारण नहीं है।

वास्तव में, यदि इंटरफ़ेस के उपयोगकर्ताओं को कंक्रीट वर्ग से अवगत नहीं होना चाहिए, और यदि कई कार्यान्वयन हैं, और यदि इंटरफ़ेस को परिभाषित करने वाला समूह समूह के एक निश्चित संस्करण को लागू करने से अलग है (सभी जो वैध मामले हैं), तो कार्यान्वयन और इंटरफ़ेस नामस्थान को अलग करना संभवतः बुद्धिमान है।

मुझे सी # के बारे में भी यकीन नहीं है, लेकिन जावा में, पैकेज सदस्यता विधि दृश्यता को लागू करने के लिए एक महत्वपूर्ण संगठनात्मक पैटर्न है। यदि आप पैकेज-प्राइवेट चीजों का उपयोग करना चाहते हैं तो आपको मूल रूप से एक ही पैकेज में कार्यान्वयन कक्षाओं को समूहबद्ध करना होगा (ताकि आप उन्हें इंटरफेस के साथ एक साथ नहीं रख सकें)।

+0

ठीक है, मैं अपनी परियोजनाओं को डोमेन ऑब्जेक्ट्स के लिए नेमस्पेस और उनके इंटरफेस के लिए एक अलग नेमस्पेस के साथ बना रहा हूं। मैं ऑनलाइन कुछ उदाहरण परियोजनाओं को देख रहा था और देखा कि उन्होंने अपने डोमेन ऑब्जेक्ट इंटरफेस और कंक्रीट कार्यान्वयन को एक साथ समूहीकृत किया था और सिर्फ यह देखना चाहते थे कि यह कितना है। – Cognitronic