Patrones de Diseño: Asignación de Responsabilidades en la Programación Orientada a Objetos

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 3,83 KB

Experto: ¿Cuál es el principio general para asignar responsabilidades a objetos? Asignar una responsabilidad a la clase que tiene la información necesaria para cumplirla.

Creador: ¿Quién debe ser responsable de asignar una nueva instancia a una clase? Asignar a la clase B la responsabilidad de crear una instancia de la clase A.

Bajo Acoplamiento: ¿Cómo dar soporte a bajos niveles de dependencia e impacto a cambios, y a un mayor reúso? Asignar responsabilidades para que el acoplamiento permanezca bajo.

Alta Cohesión: ¿Cómo hacer que los objetos se mantengan enfocados, entendibles y manejables? Asignar responsabilidades de manera que la cohesión sea alta.

Controlador: ¿Quién debería encargarse de atender un evento del sistema? Asignar a una clase la responsabilidad del manejo de los eventos del sistema. Puede ser para:

  • Clase global
  • Algo en el mundo real
  • Manejador artificial

Polimorfismo: ¿Cómo manejar alternativas basadas en distintos tipos? ¿Cómo crear componentes de software fácilmente integrables? Asignar las responsabilidades a las clases que varían su comportamiento usando operaciones polimórficas. Dar el mismo nombre a servicios en objetos diferentes.

Fabricación Pura: ¿Qué objeto debe tomar la responsabilidad cuando no se quiere violar los objetivos de alta cohesión y bajo acoplamiento, y Experto no nos sirve? Crear una clase artificial de conveniencia y asignarle un conjunto de responsabilidades cohesivas.

Indirección: ¿Dónde asignar una responsabilidad para evitar acoplamiento directo entre dos o más objetos? ¿Cómo desacoplar objetos? Asignar la responsabilidad a un objeto intermediario entre los dos objetos para que no estén directamente acoplados.

Adapter: ¿Cómo resolver la incompatibilidad de interfaces o proveer una interfaz estable a componentes similares con interfaces diferentes? Convertir la interfaz original de un componente en otra interfaz, a través de un objeto adaptador intermedio.

Factory: ¿Quién debería ser responsable de crear objetos cuando hay consideraciones especiales, como cuando es muy complejo, o separar responsabilidades para mejor cohesión? Crear un objeto de fabricación pura llamado Factory que maneje la creación.

Singleton: Solo se necesita una instancia de una clase, llamada Singleton, objeto con un único punto de acceso global. Definir un método estático de una clase que retorne un objeto Singleton.

Strategy: ¿Cómo diseñar considerando algoritmos o políticas variables, pero relacionadas? Definir cada algoritmo en una clase separada, con una interfaz común.

Composite: ¿Cómo hacer para crear un grupo o estructura compuesta de objetos de la misma forma que un objeto no compuesto? Definir clases para objetos compuestos y no compuestos de manera que implementen la misma interfaz.

Facade: ¿Qué hacer cuando se requiere una interfaz común para un conjunto heterogéneo de interfaces en un sistema? Definir un único punto de contacto con el subsistema: un objeto Facade que lo envuelva.

Observer: ¿Qué hacer cuando diferentes tipos de objetos suscriptores están interesados en los cambios de estado de un objeto publicador y quieren reaccionar a su propia manera cuando se genere un evento? Definir una interfaz Suscriptor; los suscriptores implementan la interfaz.

Variaciones Protegidas: ¿Cómo diseñar objetos de forma que las variaciones no tengan impacto en otros objetos? Identificar puntos de inestabilidad y asignar responsabilidades para crear una interfaz a su alrededor.

Entradas relacionadas: