2011-01-24 10 views
13

Eventuali duplicati:
Dependency Injection vs Factory PatternC# Differenza tra modello di fabbrica e il CIO

Qualcuno può spiegare (con semplici esempi) della differenza tra il modello di fabbrica e l'inversione del modello di controllo. Preferibilmente utilizzando .NET 2.0

+0

Intendi "modello di fabbrica" ​​o "modello di fabbrica astratto"? (Quest'ultimo è più vicino a IoC.) – Enigmativity

+0

Duplicato: http://stackoverflow.com/questions/557742/dependency-injection-vs-factory-pattern –

+2

@Mark La domanda potrebbe essere un duplicato ma sfortunatamente non ha risposta accettata –

risposta

16

Il modello di fabbrica: l'oggetto che ha bisogno di un riferimento a un servizio, dovrebbe conoscere la fabbrica che crea il servizio:

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

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

Il modello Ioc (o Dependency Injection):

l'oggetto deve solo dichiarare la sua necessità al servizio, utilizzando qualsiasi aspetto del modello Ioc (Costruttore, setter o interfaccia ... ecc.) e il contenitore cercherà di soddisfare questa esigenza:

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

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

il che significa che nel modello di fabbrica, l'oggetto decide quale metodo di creazione (scegliendo una specifica fabbrica di cemento) da usare, ma il nel modello CIO, spetta al contenitore di scegliere.

ovviamente questa non è l'unica deferenza, ma questo è quello che ho in mente per il momento. correggimi per favore se ho torto?

1

Lo schema di fabbrica riguarda il riferimento a un tipo, quindi da qualche parte nel codice si chiamerebbe in una fabbrica per risolvere qualcosa.

L'inversione del modello di controllo indica che in genere si utilizza un contenitore Ioc per risolvere le dipendenze. Questo potrebbe essere in un modo simile a un factory, o più tipicamente si userebbe l'injection dependency per risolvere le dipendenze nel costruttore o setter.

Problemi correlati