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