यहां इस पोस्ट के लिए बनाई गई एक सामान्य काल्पनिक उदाहरण है। 6 कक्षाओंनिर्भरता नरक - कैसे गहरा घोंसला वाली वस्तुओं के लिए निर्भरता पास करता है?
पर विचार करेंTableFactory, TableData, TableCRUD, TableSchema, DBConnect, Logger.
TableFactory
बाहरी वर्ग है, मान लें कि यह एक डीबी तालिका के लिए एक TableData
वस्तु धारण करते हैं।
इस TableFactory
में, TableSchema
या DBConnect
या logger
पर कोई कॉल नहीं है। मैं आंतरिक क्षेत्र की एक उदाहरण का लक्ष्य रख रहा हूं जो बाहरी दायरे में आवश्यक नहीं है।
TableData
एक आंतरिक fetches है और डेटा पर काम करता है, इसलिए इसे TableCrud
, DBConnect
और Logger
की आवश्यकता है।
TableCrud
में TableSchema
और DBConnect
और Logger
की आवश्यकता है।
DbConnect
इसके अलावा, चीज़ों को मजेदार बनाने के लिए, लॉगर की आवश्यकता होती है। मेरा उदाहरण अब 3 गुंजाइश गहरा है।
मेरा प्रश्न बहुत आसान है, यदि आपके पास ऑब्जेक्ट 3 (या अधिक) स्कॉप्स हैं जो बाहरी दायरे पर ऑब्जेक्ट्स द्वारा नहीं बुलाए जाते हैं, तो इंटरफ़ेस अलगाव को तोड़ने के बिना कोई ऑब्जेक्ट बाहरी से आंतरिक दायरे में कैसे भेजता है सिद्धांत -> टेबलफैक्टरी को आंतरिक वस्तुओं द्वारा आवश्यक डीबीसी कनेक्ट या लॉगर से निपटना नहीं चाहिए।
यदि कोई मूल ओओपी सिद्धांतों का सम्मान करता है और आसान परीक्षण योग्यता का लक्ष्य रखता है -> आपके पास बाहरी वस्तुओं को 5 वस्तुओं के इंजेक्शन की आवश्यकता होती है, और उसके बाद गेटटर विधियां होती हैं जो श्रृंखला को आगे बढ़ाने के लिए आवश्यक वस्तुओं को पार करती हैं। और आंतरिक स्कॉप्ड ऑब्जेक्ट्स को बदले में उनके भीतर 3-स्कोप-गहरी ऑब्जेक्ट्स की निर्भरताओं के इंजेक्शन की आवश्यकता होती है, जिनके लिए गेटर्स भी होते हैं। यह बाहरी स्कोप्ड ऑब्जेक्ट्स के लिए बनाता है जो कई निर्भरताओं की आवश्यकता होती है, और प्राप्तकर्ताओं को बस उन्हें पास करने के लिए।
क्या इस ऑब्जेक्ट-पासिंग पद्धति का कोई विकल्प है, जिस तरह से मुझे कुछ याद आया? कृपया बाँटें! किसी भी लिंक/टिप्पणियों की सराहना की।
+1 इसे जिस तरह से रखा गया है, अच्छा और साफ है! – Christian
गॉर्डन -> आप रॉक! ;) धन्यवाद दोस्त और यदि आप कभी मॉन्ट्रियल आते हैं, तो मैं आपको हर बार एक बियर देना चाहता हूं! आपको किसी भी तरह कर्म की जरूरत नहीं है। – stefgosselin
@stef आपका स्वागत है। यकीन नहीं है कि अगर मैं अगले वर्ष कन्फू में भाग लेगा लेकिन अगर मैं करता हूं, तो मैं खुशी से आपके साथ एक बियर रखूंगा;) – Gordon