¿Cómo se diferencia el patrón de cadena de responsabilidad del patrón de decorador?Patrones de diseño Cadena de resposibilidad Vs Decorador
Respuesta
Por lo general, pienso en Decorator como "agregar" a algo, mientras que Chain of Responsiblity es más como manejar algo.
Al comparar los dos patrones (además de ser manzanas y naranjas) la mayor diferencia es la Cadena de Responsabilidad que puede matar la cadena en cualquier punto.
Piense en los decoradores como una unidad en capas en la que cada capa siempre hace pre/post procesamiento. Chain of Responsibility es más como una lista enlazada, y generalmente 1 cosa maneja el procesamiento.
El patrón de Cadena de responsabilidad permite que múltiples cosas manejen un evento pero también les da la oportunidad de terminar la cadena en cualquier punto.
¿Puede darme algún escenario en qué situaciones ir por Chain of Responsibility o Decorator ...? –
@Mind: Como dijo Nix, manzanas y naranjas. En lugar de eso, escriba lo que se supone que debe hacer y podemos ayudarlo desde allí. – Marcus
Escenario:
Piense en una solicitud de servicio (acceso general de administración para su ordenador portátil), que debe ser aprobado por su Gerente, Director y VP. En este caso, el patrón de decorador simplemente actuaría como si en cada nivel solo hubiera comentarios de cada uno de ellos y finalmente obtendría un resultado. Por lo tanto, el Gerente dirá 'Aprobado y reenviado', Simlarly Director 'Aprobado y reenviado' y finalmente VP 'Aprobado'. Y su resultado final sería una combinación de los 3 comentarios.
Nota: la cadena no se va a romper, no importa si su solicitud fue aprobada o rechazada.
En la cadena de responsabilidad, en cada etapa, la persona individual tiene la autoridad para aprobar o rechazar. Y si en cualquier nivel se rechaza la solicitud, entonces su solicitud no pasa al siguiente nivel, sino que termina con el resultado. Espero que esto ayude :)
- 1. decorador de patrones de diseño
- 2. Patrones de diseño vs Marcos
- 3. Diseño patrones: Composite vs. Composición
- 4. Puente vs. adaptador de patrones de diseño
- 5. Patrones de Ruby on Rails - decorador vs presentador
- 6. Patrones de diseño incorrectos
- 7. Vaadin: Patrones de diseño
- 8. Patrones de diseño arquitectónico
- 9. ¿Utiliza patrones de diseño?
- 10. patrones de diseño
- 11. patrones de diseño python
- 12. Nuevos patrones de diseño/estrategias de diseño
- 13. transaccional de patrones de diseño
- 14. Patrones de diseño de mensaje
- 15. Patrones de diseño de SQL
- 16. Patrones de diseño de JavaScript/JQuery avanzados
- 17. Patrones de Diseño - Arquitectura astronauta
- 18. Patrones de diseño con C#
- 19. Patrones de diseño y Scala
- 20. Patrones de diseño de bases de datos relacionales?
- 21. Hoja de trucos de patrones de diseño
- 22. Patrones de diseño de barra de progreso?
- 23. Tutoriales de diseño de patrones de video
- 24. ¿Videos de patrones de diseño de software?
- 25. Patrones de diseño de comunicación de red
- 26. Patrones de diseño de validación de datos
- 27. Patrones de diseño de Memcache de PHP
- 28. Patrones de delegados vs. observadores
- 29. ¿Qué patrones de diseño/diseño de aplicaciones PHP usa?
- 30. Diseño de patrones fuentes de crítica
Discusión similar se puede encontrar aquí: http://stackoverflow.com/questions/747913/why-would-i-ever-use-a-chain-of-responsibility-over-a -decorator – hoymkot