Estoy usando la unidad y estoy creando una clase que lo envuelve y no sé cómo llamarlo, localizador de servicio o fábrica, ambos encapsulan la creación de los objetos, así que ... ¿cuál es la diferencia?¿Cuál es la diferencia entre el localizador de servicios y el patrón de diseño de fábrica?
Respuesta
Una fábrica crea objetos para que, cuando se le solicite.
El localizador de servicios devuelve objetos que ya pueden existir, es decir, servicios que pueden existir en alguna parte para usted.
Basta con pensar en el significado de los nombres:
- fábrica: es un lugar donde se crean los objetos.
- Servicio: es algo que puede hacer algo por usted como un servicio.
- Localizador de servicios: es algo que puede encontrar algo que puede realizar un servicio.
Leer este de Mark Seemann
http://blog.ploeh.dk/2010/11/01/PatternRecognitionAbstractFactoryOrServiceLocator.aspx http://blog.ploeh.dk/2010/02/03/ServiceLocatorIsAnAntiPattern.aspx
Es bueno para el inicio
En realidad, existe una clara separación entre ambos patrones. Es común saber que ambos patrones se usan para evitar dependencias de tipos concretos.
Sin embargo después de leer
- ágil de desarrollo de software, principios, patrones y prácticas [libro] por Rober C. Martin
- Inversión de Control Contenedores y el patrón de inyección de dependencias [artículo] por Martin Fowler http://martinfowler.com/articles/injection.html
- Reconocimiento de patrón: ¿Localizador de fábrica o servicio abstracto? [Artículo] por Mark Seemann en http://blog.ploeh.dk/2010/11/01/PatternRecognitionAbstractFactoryorServiceLocator/
- patrones de diseño [libro] por Erich Gamma et al
Algunas contradicciones graves surge:
Seemann dijo: "Una fábrica de extracto es un tipo genérico, y el El tipo de devolución del método Create está determinado por el tipo de fábrica propiamente dicho. En otras palabras, un tipo construido solo puede devolver instancias de un solo tipo ".
Mientras que Rober C. Martin no mencionó nada sobre los tipos genéricos y, además, el ejemplo de fábrica en su libro permite crear una instancia de más de un tipo de objetos para distinguirlos utilizando una cadena clave como parámetro en Factory.Make().
Gamma dijo que la intención de Abstract Factory es "Proporcionar una interfaz para crear familias de objetos relacionados o dependientes sin especificar sus clases concretas". Vale la pena mencionar que el ejemplo de Gamma Abstract Factory viola el Principio de segregación de interfaz (ISP) establecido por Martin. ISP y SOLID en general son principios más modernos o tal vez por simplicidad cuando se omiten.
Las obras de Gamma y Martin preceden a Seemann's, por lo que creo que debería seguir la definición ya hecha.
Si bien Fowler propone el Localizador de servicios como una forma de implementar la Inversión de dependencia, Seemann lo considera como un antipatrón. Ni Gamma ni Martin mencionan el Localizador de servicios.
Sin embargo, Seemann y Fowler coincidieron en que Service Locator necesita un paso de configuración para registrar una instancia de una clase concretes, esa instancia es la que se devolverá más adelante cuando se solicite un objeto de ese tipo. Martin o Gamma no mencionan este paso de configuración en su definición de Abstract Factory. El patrón abstracto de fábrica supone un nuevo objeto para ser instanciado cada vez que se solicita un objeto de ese tipo.
Conclusión
La principal diferencia entre el Servicio de Localización y Abstract Factory es que supongamos Resumen de fábrica un nuevo objeto de crear una instancia de un devuelto en cada solicitado y Servicio de localización necesita ser configurado con una instancia de objeto y cada vez que el la misma instancia será devuelta.
- 1. ¿Cuál es la diferencia entre el patrón de fachada y el patrón de fábrica abstarct?
- 2. ¿Cuál es la diferencia entre el patrón de diseño de estrategia y el patrón de fábrica abstracto?
- 3. diferencia entre un repositorio y el patrón de fábrica
- 4. ¿Cuál es la diferencia entre el patrón de construcción y el patrón de peso mosca?
- 5. fábrica patrón de diseño método
- 6. ¿Diferencia entre el paradigma de programación, el patrón de diseño y la arquitectura de la aplicación?
- 7. C# Diferencia entre el patrón de la fábrica y de la COI
- 8. ¿El localizador de servicios comunes es ampliamente utilizado?
- 9. Cuál es la diferencia entre un algoritmo y un Patrón de diseño
- 10. ¿Cuál es la diferencia entre el patrón de estrategia y la inyección de dependencia?
- 11. ¿Cuál es la diferencia entre los decoradores de Python y el patrón de decorador?
- 12. ¿Cuándo utilizaría el localizador de servicios comunes?
- 13. verificando Entiendo la diferencia entre IoC, Ioc Container, DI y el localizador de servicio
- 14. ¿Qué patrón de diseño es el opuesto al patrón de fábrica?
- 15. ¿Cuál es la diferencia entre el controlador en el patrón MVC y el presentador en el patrón MVP?
- 16. ¿Cuál es la diferencia entre un mixin y el patrón de decorador?
- 17. fábrica (patrón de diseño) en Objective C
- 18. ¿Cuál es la diferencia entre el mango y el hilo?
- 19. ¿cuál es la diferencia entre el objetivo y el proyecto?
- 20. Backbone.Js - ¿Cuál es la diferencia entre el y $ el?
- 21. ¿Cuál es la diferencia entre el NSImage y el UIImage?
- 22. ¿Cuál es la diferencia entre el JSP y el JSTL?
- 23. ¿Qué es un patrón de diseño de fábrica en PHP?
- 24. ¿Cuál es la diferencia entre el tenedor y el hilo?
- 25. ¿Cómo puedo implementar el patrón de localizador de servicios en Cocoa Touch en múltiples proyectos?
- 26. Qt: ¿cuál es la diferencia entre el diseño y el widget?
- 27. Entender el patrón de fábrica
- 28. mito sobre el patrón de la fábrica
- 29. ¿Cuál es la diferencia entre el
- 30. ¿Cuál es el patrón de constructor revisado?
El servicio al final es una clase, que hace algo. Para recuperarlo, tiene que crearse así ... el Localizador de servicios es como una fábrica, porque tiene que hacer un "nuevo" – toroveneno
No tiene que crear un nuevo objeto de servicio ... en cambio, el objeto de servicio será registrado antes de tratar de localizar el servicio, podría ser cuando se inicia la aplicación, de modo que en el futuro el localizador de servicios pueda devolver ese servicio a la persona que llama. –
Como la "simplicidad" de la respuesta – Spock