Los General Responsibility Assignment Software Patterns son un conjunto de 9 principios de alto nivel para el desarrollo de software, similares a los Principios SOLID. Fueron reunidos en el libro “Applying UML and Patterns” de Craig Larman, y están pensados para los Métodos Orientados a Objetos.
- Alta Cohesión: aumentar el nivel en el que los elementos de un módulo corresponden juntos. De peor a mejor, los niveles son: casual lógica temporal procedural de información secuencial funcional.
- Bajo Acoplamiento: reducir el nivel de interdependencia entre módulos para facilitar el mantenimiento.
- Controlador: intermediario entre la UI y la lógica de negocio para desacoplarlos. Intenta ser una abstracción liviana. MVC es una implementación de este patrón.
- Creador: la clase
Btiene la responsabilidad de crear una instancia de la claseAsi es queBcontiene aA, guarda aA, usa cercanamente aA, o tiene sus datos. - Experto en Información: la responsabilidad de instanciar un objeto cae en la clase que tiene los datos necesarios para instanciarlo.
- Polimorfismo: usar polimorfismo para evitar la lógica condicional en base al tipo de un objeto o dato.
- Fabricación Pura: introducir clases que no tienen correspondencia con el dominio (osea, solo existen en la solución), pero que mejoran el diseño del sistema.
- Indirección: asignar a una clase intermedia la responsabilidad de mediar entre dos clases para limitar la propagación de cambios (romper dependencias).
- Variaciones Protegidas: el principio fundamental de protegerse frente al cambio.
Los patrones GRASP son de alto nivel, y se solapan entre ellos y también con SOLID. No son exhaustivos, y conviene considerarlos más como buenas prácticas que como leyes obligatorias.