आईओसी और डीआई को समझने के लिए एक अच्छा सादृश्य क्या है?आईओसी और डीआई को समझने के लिए एक अच्छा सादृश्य क्या है?
उत्तर
आप एक कार की क्लासिक उदाहरण लेते हैं। आप नियमित रूप से कार खरीदने की प्रक्रिया के माध्यम से जाने के लिए और पहियों ले निर्माता आप देता सकता है:
public class Fifteens
{
public void Roll() { Console.WriteLine("Nice smooth family ride..."); }
}
public class Car
{
Fifteens wheels = new Fifteens();
public Car() { }
public void Drive() { wheels.Roll; }
}
फिर
:
Car myCar = new Car();
myCar.Drive() // Uses the stock wheels
या आप एक कस्टम कार निर्माता जो कि वास्तव में आप किस तरह निर्दिष्ट कर सकते हैं मिल सकता है का पहिया आप अपनी कार का उपयोग करने के, जब तक कि वे अनुरूप एक पहिया के विनिर्देशों हैं:
public interface IWheel
{
void Roll();
}
public class Twenties : IWheel
{
public void Roll() { Console.WriteLine("Rough Ridin'...");
}
public class Car
{
IWheel _wheels;
public Car(IWheel wheels) { _wheels = wheels; }
public void Drive() { wheels.Roll(); }
}
तब:
Car myCar = new Car(new Twenties());
myCar.Drive(); // Uses the wheels you injected.
लेकिन अब आप जो भी पहिया चाहते हैं उसे इंजेक्ट कर सकते हैं। ध्यान रखें कि वह सिर्फ एक तरह का निर्भरता इंजेक्शन (कन्स्ट्रक्टर इंजेक्शन) है लेकिन यह सबसे आसान उदाहरणों में से एक के रूप में कार्य करता है।
मार्टिन फाउलर explaining those patterns पर एक महान काम करता है।
कुछ अलग-अलग अनुरूपताएं हैं जो नियंत्रण में बदलाव को समझने में आसान बनाती हैं। हम इसे नियमित जीवन में कई अलग-अलग तरीकों से अनुभव करते हैं, इसलिए हम कोड में फॉर्म उधार ले रहे हैं। सेना में एक समानता को "कमान की श्रृंखला" कहा जाता है।
यह शायद नियंत्रण में उलटा होने के समानांतर है। सेना प्रत्येक नई भर्ती को उन बुनियादी चीजों के साथ प्रदान करती है जिन्हें उन्हें अपनी रैंक पर संचालित करने की आवश्यकता होती है, और उन आदेशों को जारी करता है जिन्हें भर्ती करना चाहिए। कोड में एक ही सिद्धांत लागू होता है। प्रत्येक घटक को तत्काल इकाई द्वारा संचालित करने के लिए आवश्यक प्रावधान दिए जाते हैं (यानी इस समानता में कमांडिंग अधिकारी)। तत्काल इकाई तब उस घटक पर कार्य करती है जिसे इसे कार्य करने की आवश्यकता होती है।
अधिक यहाँ:
डुप्लिकेट: http://stackoverflow.com/questions/424457/does-anyone-have-a-good-analogy-for- निर्भरता- इंजेक्शन –
यह भी देखें http://stackoverflow.com/questions/1638919/how -ट-स्पष्टीकरण-निर्भरता-इंजेक्शन-टू-ए -5-वर्षीय –
इसे देखें: http://www.jamesshore.com/Blog/Dependency-Injection-Demystified.html – Vishal