मैंने एक बार एक कॉलम पढ़ा जहां उन्होंने 3 प्रकार के मॉडल की तुलना की: स्पेगेटी मॉडल, Lasagna मॉडल और Ravioli मॉडल।
स्पेगेटी मॉडल में, सभी कोड एक दूसरे के साथ जुड़े हुए हैं, कोई स्पष्ट संरचना नहीं है। यह भयानक है, और हम शायद उस पर सहमत हो सकते हैं।
में Lasagna मॉडल, कोड अलग-अलग परतों में विभाजित है, और केवल एक उच्च स्तरीय परत निम्न स्तर की परत तक पहुंच सकती है, कभी दूसरी तरफ नहीं।
में Ravioli मॉडल, कोड छोटे मॉड्यूल में समूहित किया गया है। प्रत्येक मॉड्यूल केवल खुलासा करता है कि किस चीज का खुलासा किया जाना चाहिए, लेकिन प्रत्येक मॉड्यूल अभी भी हर दूसरे मॉड्यूल तक पहुंच सकता है।
लगभग 10 साल पहले, मुझे लगता था कि रैवियोली मॉडल Lasagna मॉडल से बेहतर है। आखिरकार, जावा में आपके पास जावा मॉड्यूल भी हैं जो आसानी से एक दूसरे को कॉल कर सकते हैं (और मुझे लगता है कि सभी अलग-अलग जावा मॉड्यूल के बीच कोई वास्तविक संरचना नहीं थी)। मेरे लिए, Lasagna मॉडल गैर-ऑब्जेक्ट उन्मुख पुराने कोड का परिणाम प्रतीत होता था, जबकि Ravioli मॉडल अधिक आधुनिक, अधिक ऑब्जेक्ट उन्मुख लग रहा था।
आजकल, मैं लासगना मॉडल पर वापस जाता हूं, लेकिन एक रैवियोली मॉडल अंतर्निहित है।यह वह जगह है:
- आवेदन लज़ान्या मॉडल
- लेकिन परतों के भीतर, कोड अभी भी में विभिन्न मॉड्यूल के बीच विभाजित है कि एक रैवियोली में की तरह, एक दूसरे को एक्सेस कर सकते हैं की तरह, विभिन्न परतों का उपयोग कर बनाया गया है आदर्श।
कुछ परिपत्र संदर्भों को हटाने के लिए मुश्किल या असंभव हो सकता है। एक उदाहरण निम्नलिखित है: मान लीजिए कि आपके पास आपके एप्लिकेशन और एक डीबग क्लास में एक फ़ाइलवाइटर क्लास है। डीबग क्लास को फाइलवाइटर क्लास की आवश्यकता होगी क्योंकि इसे डीबग जानकारी के साथ फाइलें लिखनी होंगी। दूसरी ओर, फ़ाइलवाइटर क्लास भी डीबग क्लास का उपयोग करना चाह सकता है।
ध्यान दें कि इस उदाहरण में परिपत्र संदर्भ पहले से ही समस्याएं पैदा कर सकता है (फ़ाइल लिखने के दौरान फ़ाइलवाइटर क्लास डीबग क्लास को कॉल कर सकता है, लेकिन डीबग क्लास डीबग जानकारी लिखने के लिए फ़ाइलवाइटर क्लास का उपयोग करती है, परिणाम: स्टैक ओवरफ़्लो) ।
इस मामले में, समस्या को डीबग क्लास में फ़ाइलवाइटर क्लास का उपयोग न करके आसानी से हल किया जा सकता है, लेकिन मूल iostreams (यदि आप C++ में विकसित हो रहे हैं) का उपयोग करने के लिए आसानी से हल किया जा सकता है। अन्य मामलों में, समस्या हल करने के लिए बहुत कठिन हो सकता है।
संदेह की पुष्टि! – mclark1129