Table of Contents
निर्भरता इंजेक्शन (DI) एक डिज़ाइन पैटर्न है जो सॉफ्टवेयर मॉड्यूल को अधिक परीक्षण योग्य, लचीला और रखरखाव करने में मदद करता है। इसमें इसके अलावा बाहर से इसकी निर्भरता के साथ एक मॉड्यूल प्रदान करना शामिल है, बजाय उन्हें खुद ही बनाना या ढूंढना। यह दृष्टिकोण परीक्षण को सरल बनाता है क्योंकि निर्भरता को परीक्षण के दौरान नकली वस्तुओं या ठूंठों के साथ आसानी से बदला जा सकता है।
निर्भरता इंजेक्शन क्या है?
निर्भरता इंजेक्शन एक ऐसी तकनीक है जहां किसी वस्तु को निर्माता, सेटर या इंटरफ़ेस विधियों के माध्यम से अपनी निर्भरता प्राप्त होती है। हार्ड कोडिंग निर्भरता के बजाय, मॉड्यूल को बाहरी संसाधनों को स्वीकार करने के लिए डिज़ाइन किया गया है, जिससे उन्हें कम कसकर जोड़ा गया।
निर्भरता इंजेक्शन का उपयोग करने के लाभ
- ]Improved Testability: निर्भरता को नकली वस्तुओं के साथ बदल दिया जा सकता है, जिससे यूनिट परीक्षण आसान और विश्वसनीय हो सकता है।
- ]वर्धित लचीलापन: एक निर्भरता को बदलने के लिए निर्भर मॉड्यूल को संशोधित करने की आवश्यकता नहीं है।
- बेटर कोड संगठन: चिंताओं और क्लीनर वास्तुकला के अलगाव को बढ़ावा देता है।
कार्यान्वयन निर्भरता इंजेक्शन
DI को लागू करने के कई तरीके हैं:
- Constructor Injection: वर्ग निर्माता के माध्यम से निर्भरता प्रदान की जाती है।
- सेटर इंजेक्शन: निर्भरताएं वस्तु निर्माण के बाद सेटर विधियों का उपयोग करके निर्धारित की जाती हैं।
- ]इंटरफेस इंजेक्शन: अंतरफलक विधियों के माध्यम से निर्भरता प्रदान की जाती है।
उदाहरण के लिए निर्भरता इंजेक्शन in अभ्यास
एक साधारण उदाहरण पर विचार करें जहां a DatabaseService ]]DatabaseConnection]]] पर निर्भर करता है। DI का उपयोग करके, कनेक्शन को सेवा में इंजेक्ट किया जाता है:
class DatabaseConnection {
public function connect() {
// Connection logic
}
}
class DatabaseService {
private $connection;
public function __construct(DatabaseConnection $connection) {
$this->connection = $connection;
}
public function fetchData() {
$this->connection->connect();
// Fetch data logic
}
}
// Injecting dependency
$connection = new DatabaseConnection();
$service = new DatabaseService($connection);
परीक्षण के दौरान, आप वास्तविक डेटाबेस संचालन से ]डेटाबेसकनेक्टियन को अलग करने के लिए एक नकली वस्तु के साथ डेटाबेससर्विस ]] को प्रतिस्थापित कर सकते हैं।
निष्कर्ष
निर्भरता इंजेक्शन पैटर्न का उपयोग करने से सॉफ्टवेयर मॉड्यूल की परीक्षण क्षमता को अपनी निर्भरता से अलग करके बढ़ाता है। यह अभ्यास अधिक रखरखाव योग्य, लचीला और मजबूत कोड की ओर जाता है, विशेष रूप से जटिल अनुप्रयोगों में।