-
Introducción
- Las responsabilidades pueden evaluarse a nivel de sistema, paquete u objeto
- Una responsabilidad es más que una operación, depende de su granularidad
-
Implementación
- Un solo objeto que trabaja independientemente
- Un conjunto de objetos que colaboran
-
Opciones para cubrir
responsabilidades
-
El objeto hace el trabajo por sí mismo
- Se puede implementar una responsabilidad
a través de uno o más métodos
-
Dividir comportamiento complejo
en dos partes (“divide y vencerás”)
- Una parte donde se definen los pasos principales
- Una o más partes “ayudantes” (“helpers”) que implementan los pasos
-
Delegar parte de la responsabilidad a
uno o más objetos “ayudantes” (“helpers”)
- Solicitarles que hagan parte del trabajo:
tomar una decisión o prestar un servicio
- Solicitarles información relevante (“hacerles preguntas”)
-
Pautas
-
Mantener el comportamiento con la información relacionada
- Para que los objetos sean eficientes
-
Ningún rol debe ser demasiado grande
- Para entender con facilidad qué hacen los objetos
-
Distribuir el comportamiento
- Para que los objetos sean “inteligentes”
-
Mantener la información acerca de una cosa en un solo lugar
- Para reducir la complejidad
-
Estereotipos
-
Poseedor de información
- “Sabe cosas”
- Conoce y proporciona información
-
Estructurador
- Mantiene relaciones entre objetos e información acerca de ellas
- Organiza múltiples objetos similares
-
Proveedor de servicios
- “Hace cosas”
- Realiza trabajo por demanda
-
Coordinador
- “Delega el trabajo”
- Reacciona mecánicamente ante los eventos
-
Controlador
- “Dirige actividades”
- Toma decisiones y dirige de cerca las acciones de otros objetos
-
Interfaz
- Transforma comandos e información entre distintas partes del sistema
- Convierte un nivel de abstracción en otro
-
Estilos de colaboración
-
Control por delegación
- Parte de las decisiones y mucho de la acción se delega a otros objetos
- El coordinador tiende a trabajar con menos objetos
que en un esquema de control centralizado
- Los diálogos son de mayor nivel, la comunicación es más abstracta y potente
- Los cambios tienden a afectar menos objetos
- Es más fácil dividir el trabajo de diseño y construcción entre varias personas
- Es el estilo preferido
-
Control disperso
- Se extiende la toma de decisiones y la acción en varios objetos que hacen
poco individualmente pero logran hacer el trabajo colectivamente
- Puede ocasionar largas cadenas de mensajes para
obtener información de los objetos que la poseen
- Dependencias “en duro” entre los objetos de la
cadena de control puede quebrar la encapsulación
- Se hace más difícil de entender qué hace cada objeto