2011-01-24 8 views
13

संभव डुप्लिकेट:
Dependency Injection vs Factory Patternसी # अंतर

किसी कारखाने पैटर्न और नियंत्रण पद्धति के उलट के बीच अंतर की (सरल उदाहरण के साथ) कृपया समझा जा सकता है। पसंदीदा रूप से .NET2.0

+0

क्या आपका मतलब "कारखाना पैटर्न" या "अमूर्त कारखाना पैटर्न" है? (उत्तरार्द्ध आईओसी के अर्थ में करीब है।) – Enigmativity

+0

डुप्लिकेट: http://stackoverflow.com/questions/557742/dependency-injection-vs-factory-pattern –

+2

@ मार्क सवाल यह भी एक डुप्लिकेट हो सकता है लेकिन दुर्भाग्यवश इसमें कोई नहीं है स्वीकार्य उत्तर –

उत्तर

16

कारखाने पैटर्न:

public class BLLObject 
{ 
    public IDal DalInstance { get; set; } 

    public BLLObject() 
    { 
     DalInstance = DalFactory.CreateSqlServerDal(); 
    } 
} 

Ioc पैटर्न (या निर्भरता इंजेक्शन): वस्तु जो एक सेवा के लिए एक संदर्भ की जरूरत है, कारखाने कि सेवा बनाता है के बारे में पता होना चाहिए

ऑब्जेक्ट केवल आईओसी पैटर्न (कन्स्ट्रक्टर, सेटर, या इंटरफ़ेस ... आदि) के किसी भी पहलू का उपयोग करके सेवा की आवश्यकता को घोषित करने की आवश्यकता है और कंटेनर इस आवश्यकता को पूरा करने का प्रयास करेगा:

public class BLLObject 
{ 
    public IDal DalInstance { get; set; } 

    public BLLObject(IDal _dalInstance) 
    { 
     DalInstance = _dalInstance; 
    } 
} 

जिसका अर्थ कारखाना पैटर्न में, वस्तु फैसला करता है कि जो निर्माण विधि का उपयोग करने के लिए (एक विशिष्ट ठोस कारखाने का चयन करके), लेकिन आईओसी पैटर्न में, यह कंटेनर का चयन करने पर निर्भर है।

बेशक यह केवल एकमात्र सम्मान नहीं है, लेकिन यह समय मेरे दिमाग में है। कृपया मुझे सही करें अगर मैं गलत हूं?

1

फ़ैक्टरी पैटर्न किसी प्रकार का संदर्भ प्राप्त करने के बारे में है, इसलिए कहीं भी आपके कोड में आप कुछ हल करने के लिए कारखाने में कॉल करेंगे।

नियंत्रण पैटर्न का उलटा मतलब है कि आप आम तौर पर आपके लिए निर्भरताओं को हल करने के लिए एक आईओसी कंटेनर का उपयोग करेंगे। यह फैक्ट्री के समान तरीके से हो सकता है, या अधिक आम तौर पर आप निर्भरता इंजेक्शन का उपयोग कन्स्ट्रक्टर या सेटर्स में निर्भरताओं को हल करने के लिए करेंगे।

संबंधित मुद्दे