Está en la página 1de 3

[Escribir el título del documento]

[Escribir el nombre del autor]

Patrones de Diseño GRASP

Un patrón es una descripción de un problema bien conocido que suele incluir:

 Descripción
 Escenario de Uso 
 Solución concreta
 La consecuencias de utilizar este patrón
 Ejemplos de implementación
 Lista de patrones relacionados 

GRASP es el acrónimo de General Responsibility Assignment Software Patterns. Una de las cosas más
complicadas en Orientación a Objeto consiste en elegir las clases adecuadas y decidir como estas clases
deben interactuar. Incluso cuando utilizamos metodologías rápidas como programación extrema (extreme
programming) y centramos el proceso en el desarrollo continuo, es inevitable elegir cuidadosamente las
responsabilidades de cada clase en la primera codificación y, fundamentalmente, en la refactorización
(continual) de nuestro programa.

Los patrones GRASP describen los principios fundamentales de diseño de objetos para la asignación de
responsabilidades. Constituyen un apoyo para la enseñanza que ayuda a entender el diseño de objeto
esencial y aplica el razonamiento para el diseño de una forma sistemática, racional y explicable.

En cuanto a las responsabilidades UML define una responsabilidad como “un contrato u obligación de un
clasificador”.

Las responsabilidades están relacionadas con las obligaciones de un objeto en cuanto a su comportamiento.

Básicamente, estas responsabilidades son de los siguientes dos tipos:

Conocer:

* Conocer los datos privados encapsulados.


* Conocer los objetos relacionados.
* Conocer las cosas que puede derivar o calcular.

Hacer:

* Hacer algo él mismo, como crear un objeto o hacer un cálculo.


* Iniciar una acción en otros objetos.
* Controlar y coordinar actividades en otros objetos.

GRASP Se pueden destacar 5 patrones Principales que son:

Experto.
Creador.
Alta cohesión.
[Escribir el título del documento]
[Escribir el nombre del autor]

Bajo acoplamiento.
Controlador.

Y 4 patrones GRASP adicionales que son:

Fabricación Pura.
Polimorfismo.
Indirección.
No hables con extraños.

Nombre del patrón Problema Solución


¿Cuál es un principio general Asignar una responsabilidad al experto en información – la
Experto para asignar responsabilidades clase que tiene la información necesaria para la realización de
a los objetos? la asignación.
Asignar a la clase B la responsabilidad de crear una instancia
de clase A si se cumple uno o más de los casos siguientes:

1. B agrega objetos de A
¿Quién debería ser el 2. B contiene objetos de A
responsable de la creación de 3. B registra instancias de objetos de A
Creador
una nueva instancia de alguna 4. B utiliza más estrechamente objetos de A.
clase? 5. B tiene datos de inicialización que se pasarán a un
objeto de A cuando sea creado (por tanto, B es un
Experto con respecto ala creación de A).
6. B es un creador de los objetos A.

¿Cómo soportar bajas


dependencias, bajo impacto Asignar una responsabilidad de manera que el acoplamiento
Bajo Acoplamiento
del cambio e incremento de la permanezca bajo.
reutilización?
¿Cómo mantener la Asignar una responsabilidad de manera que la cohesión
Alta cohesión
complejidad manejable? permanezca alta.
Controlador ¿Quién debería ser el Asignar una responsabilidad de recibir o manejar un mensaje
responsable de gestionar un de evento del sistema a una clase que representa una de las
evento de entrada al sistema? opciones siguientes:

1. Representa el sistema global, dispositivo o


subsistema.
2. Representa un caso de uso en el que tiene lugar el
evento del sistema a menudo denominado <nombre
del caso de uso> Manejador, <nombre del caso de
uso> coordinador, <nombre del caso de uso> Sesión.

•Utilice la misma clase controlador para todos los eventos del


sistema en el mismo escenario de caso de uso.

•Informalmente, una sesión es una instancia de una


conversación con un actor. Las sesiones pueden tener
[Escribir el título del documento]
[Escribir el nombre del autor]

cualquier duración, pero se organizan a menudo en función de


casos de uso.

También podría gustarte