में पुन: उपयोग अमूर्त सिद्धांत हमारे सी # एमवीसी अनुप्रयोग में हमारे पास बहुत से इंटरफेस हैं जो उन्हें लागू करने वाली वस्तुओं के साथ 1 से 1 मानचित्र करते हैं। यानी: मूल रूप से, प्रत्येक ऑब्जेक्ट के लिए बनाया गया, एक "निकालें इंटरफ़ेस" ऑपरेशन किया गया है।सी #
इंटरफेस का उपयोग मोक द्वारा हमारे यूनिट परीक्षणों के लिए नकली वस्तुओं को उत्पन्न करने के लिए किया जाता है। लेकिन यह एकमात्र समय है जब इंटरफेस का पुन: उपयोग किया जाता है।
हमारे सिस्टम में कोई ठोस वस्तुएं कई इंटरफेस लागू नहीं करती हैं।
क्या कोई मुझे बता सकता है कि क्या यह सड़क के नीचे समस्याएं पैदा कर रहा है? और यदि हां, तो वे क्या होंगे?
मैं सोच रहा था, हमारे ऐप को फिर से दोहराव है, उदाहरण के लिए इन 2 इंटरफेस (संपादित करें: हमारी सर्विसेज परत में) केवल एक चीज जो अलग है वह विधि का नाम और पैरामीटर का प्रकार है, लेकिन शब्दार्थ वे खजाने वे को संदेश भेजने के साथ ही बात करते हैं:
interface ICustomer
{
void AddCustomer(Customer toAdd);
void UpdateCustomer(Customer toUpdate);
Customer GetById(int customerId);
}
interface IEmployee
{
void AddEmployee(Employee toBeAdded);
void UpdateEmployee(Employee toUpdate);
Employee GetById(int employeeId);
}
और कहा कि मैं कहाँ लगता है पुन: उपयोग किया अमूर्त सिद्धांत रूप में यानी आएगा, जैसे कुछ करने के लिए कोड को बदलने के लिए है:
public interface IEmployee: IAdd<Employee>, IUpdate<Employee>, IFinder<Employee>
यह भंडार पेट के बारे में नहीं है टर्न - यह किसी भी परत में इंटरफेस के बारे में है जो दिखता है कि वे अर्थात् समान व्यवहार साझा करते हैं। क्या इन परिचालनों के लिए आम इंटरफेस प्राप्त करने और "उप-इंटरफेस" को उनके द्वारा प्राप्त करने के लायक है?
कम से कम यह विधियों के अनुक्रमों को लगातार बनाए रखेगा। लेकिन यह मुझे अन्य लाभ क्या देगा? (लिस्कोव प्रतिस्थापन सिद्धांत एक तरफ)
अभी, विधियों के नाम और वापसी प्रकार सभी जगह पर हैं।
मैंने मार्क सेमैन के ब्लॉग को पुन: उपयोग किए गए सार तत्व सिद्धांत के बारे में पढ़ा लेकिन मुझे समझ में नहीं आया, यह स्पष्ट नहीं था। शायद मैं सिर्फ बेवकूफ हूँ :) मैंने हेडर इंटरफेस की फाउलर की परिभाषा भी पढ़ी।
लग रहा है। –
मुझे खुद को पुन: उपयोग किए गए abstractions को देखना होगा, लेकिन आपका सुझाव इंटरफ़ेस पृथक्करण सिद्धांत की तरह दिखता है, जो SOLID कोड का हिस्सा है। यह एक बुरी चीज नहीं हो सकती है :) – jrahhali
मैंने जिन तरीकों का उल्लेख किया है वे वास्तव में सेवा (व्यापार) परत का हिस्सा हैं। हम डीडीडी का उपयोग नहीं कर रहे हैं। हमारे कार्यान्वयन में, एमवीसी नियंत्रक "सेवाओं" (कर्मचारी सेवा, ग्राहक सेवा के आधार पर नामित वस्तुओं) का उपयोग करते हैं, जो ऊपर दिए गए इंटरफेस को लागू करते हैं। वे एंटीटी फ्रेमवर्क में लागू एक और परत में रिपोजिटरी का "उपयोग" करते हैं, जिनमें बहुत समान इंटरफेस होते हैं। – Scott