2010-09-15 12 views

Respuesta

8

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.

+0

¿Puede darme algún escenario en qué situaciones ir por Chain of Responsibility o Decorator ...? –

+0

@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

5

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 :)