Al escribir código que debe ser capaz de identificar dos grandes grupo de objetos:inyección de dependencias, la inyección de un objeto "inyectable" (servicio) en un newable (entidad)
- Inyectables
- Newables
http://www.loosecouplings.com/2011/01/how-to-write-testable-code-overview.html
http://misko.hevery.com/2008/09/30/to-new-or-not-to-new/
objetos inyectables son objetos (servicios) que exponen dependencias en sus constructores estas dependencias habitualmente se resuelven usando un contenedor IoC, estos objetos sólo pueden pedir otros inyectables en sus constructores
Newable son objetos que también se exponen dependencias en sus constructores, pero newables sólo pueden pedir otros objetos newable (entidades, Value Objects), otra de las características de los objetos newable es que no deberían contener una referencia a un objeto inyectable
Pero al escribir código, que a menudo necesidad de "inyectar" un servicio hielo (inyectable) en una Entidad (nueva)
He estado pensando que tal vez exponer una dependencia de servicio en un objeto nuevo es mejor hacerlo a nivel de método, pero esto parece mucho trabajo ... solo pensando en resolver las dependencias cada vez que un método es llamado así .... esto huele tendríamos que usar el Servicio de Localización de anti-patrón
la forma en que he resuelto esto es:
Crear una interfaz con un método que expone la dependencia (el servicio se usará en este método)
Crear un método de extensión para la interfaz y colocarlo en un espacio de nombres diferente, tal vez en otra asamblea, y acaba de concluir la llamada al método original para resolver la dependencia usando un localizador de servicios
Hacer esto nos tener una separación consistente entre objetos nuevos e inyectables con la capacidad de usar servicios en nuestros nuevos objetos fácilmente
- ¿Qué opinas?
- El uso del localizador de servicios en un método de extensión se considera una mala práctica?
- ¿Cómo realizaría la prueba unitaria de la llamada al método de extensión?
Muy relacionado: http://stackoverflow.com/questions/4835046/why-not-use-an-ioc-container-to-resolve-dependencies-for-entities-business-objec – Steven
Thx este enlace fue realmente útil – Jupaol