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?
fonte
2011-01-24 12:21:21
Intendi "modello di fabbrica" o "modello di fabbrica astratto"? (Quest'ultimo è più vicino a IoC.) – Enigmativity
Duplicato: http://stackoverflow.com/questions/557742/dependency-injection-vs-factory-pattern –
@Mark La domanda potrebbe essere un duplicato ma sfortunatamente non ha risposta accettata –