Skip to content

Latest commit

 

History

History
75 lines (58 loc) · 2.16 KB

File metadata and controls

75 lines (58 loc) · 2.16 KB

Guías de diseño

GRASP

Tarjetas

Expert (Experto)
Problema
¿Cuál es el principio básico para asignar responsabilidades?
Solución
Asignar la responsabilidad al experto en los datos, es decir, a la clase que tiene los datos necesarios para cumplir la responsabilidad

Creator (Creador)
Problema
¿Qué clase debe ser responsable de crear instancias de otra clase?
Solución
Asignar a B la responsabilidad de crear instancias de A si:
- B está compuesto de/contiene A
- B usa estrechamente a A
- B es un experto para crear A

Low Coupling (Bajo Acoplamiento)
Problema
¿Cómo soportar baja dependencia y maximizar la reutilización?
Solución
Asignar las responsabilidades de forma que el acoplamiento permanezca bajo

High Cohesion (Alta Cohesión)
Problema
¿Cómo mantener la complejidad manejable?
Solución
Asignar las responsabilidades de forma que la cohesión permanezca alta

Polymorphism (Polimorfismo)
Problema
¿Cómo manejar alternativas con base en los tipos? ¿Cómo construir componentes conectables?
Solución
Usar operaciones polimórficas y evitar preguntar por la clase de un objeto

Pure Fabrication (Fabricación Pura)
Problema
¿A quién asignar responsabilidades sin generar baja cohesión y alto acoplamiento?
Solución
Asignar responsabilidades altamente cohesivas a una clase artificial poco acoplada

Indirection (Indirección)
Problema
¿A quién asignar responsabilidades para evitar acoplamiento directo?
Solución
Asignar responsabilidades a un objeto intermedio para evitar el acoplamiento directo

Don’t talk to strangers (Ley de Demeter)
Problema
¿A quién asignar responsabilidades para evitar conocer la estructura interna de un objeto?
Solución
Enviar mensajes sólo a sí mismo, a un parámetro, a un atributo, a un objeto creado en el método, o al contenido de una colección poseída