GRASP
Patrones de diseño GRASP (General Responsibility Assignment Software Patterns)
Estos patrones lo que buscan es responder la pregunta: ¿Quién hace qué? ¿Cuál objeto o clase es responsable de
una acción o rol? También ayuda a definir cómo trabajan las clases entre sí. Lo que busca GRASP es que el
código escrito sea entendible y limpio.
una acción o rol? También ayuda a definir cómo trabajan las clases entre sí. Lo que busca GRASP es que el
código escrito sea entendible y limpio.
Los principios GRASP son:
El controlador: Es el responsable de dirigir las peticiones realizadas por parte del usuario por medio de la interfaz
gráfica hacia el back-end del sistema. Este patrón permite la separación de la interfaz de usuario del componente de
negocio del sistema. Se debe prestar especial atención cuando un controlador tiene muchas responsabilidades, en
este caso es recomendable crear más controladores y asignarles las respectivas responsabilidades.
gráfica hacia el back-end del sistema. Este patrón permite la separación de la interfaz de usuario del componente de
negocio del sistema. Se debe prestar especial atención cuando un controlador tiene muchas responsabilidades, en
este caso es recomendable crear más controladores y asignarles las respectivas responsabilidades.
Experto en información: Tiene la necesidad de establecer las responsabilidades adecuadas al experto correcto, esto es,
la clase que tiene los atributos (o en algunos casos colabora con otros) involucrados a tal responsabilidad. De esta
manera la clase tiene toda la capacidad de cumplir con la responsabilidad asignada ya que contiene toda la información
al respecto. Este también ayuda a la encapsulación de la información y permite distribuir el comportamiento del sistema
en diferentes clases.
la clase que tiene los atributos (o en algunos casos colabora con otros) involucrados a tal responsabilidad. De esta
manera la clase tiene toda la capacidad de cumplir con la responsabilidad asignada ya que contiene toda la información
al respecto. Este también ayuda a la encapsulación de la información y permite distribuir el comportamiento del sistema
en diferentes clases.
Creador: El creador tiene la responsabilidad de crear determinados objetos. Este patrón es el más fácil de entender
conceptualmente. Hay varias razones de una clase por las cuales una clase puede crear un objeto, en el siguiente caso
B es el objeto creador:
conceptualmente. Hay varias razones de una clase por las cuales una clase puede crear un objeto, en el siguiente caso
B es el objeto creador:
- B contiene a A
- B utiliza la mayor parte de las características de A
- B puede inicializar A
Bajo acoplamiento: Este busca que haya una baja dependencia entre los diferentes componentes software construidos en
la aplicación. Al haber bajo acoplamiento, la aplicación se vuelve más modular, ya que esta no conoce o conoce muy poco
de cómo funciona internamente el componente referenciado.
Alta cohesión: Este concepto indica en qué medida un componente de la aplicación cumple con un objetivo específico, con
una única responsabilidad. El componente tendrá una alta cohesión, siempre y cuando exista alta relación entre las
funcionalidades que allí se encuentran construidas. En todas las decisiones de diseño se debería cumplir con este concepto.
la aplicación. Al haber bajo acoplamiento, la aplicación se vuelve más modular, ya que esta no conoce o conoce muy poco
de cómo funciona internamente el componente referenciado.
Alta cohesión: Este concepto indica en qué medida un componente de la aplicación cumple con un objetivo específico, con
una única responsabilidad. El componente tendrá una alta cohesión, siempre y cuando exista alta relación entre las
funcionalidades que allí se encuentran construidas. En todas las decisiones de diseño se debería cumplir con este concepto.
Polimorfismo: Este indica cómo se deben manejar los elementos relacionados pero variados según un tipo de elemento. Esto
permite implementar nuevas variaciones de manera fácil.
Fabricación pura: Cuándo las soluciones afectan el bajo acoplamiento y la alta cohesión se debe proceder a asignar un conjunto
de responsabilidades a una clase artificial, esta clase solo se debe crear para este fin y no representa ningún concepto del dominio.
Estas clases pueden llegar a ser muy cohesivas y reutilizables.
permite implementar nuevas variaciones de manera fácil.
Fabricación pura: Cuándo las soluciones afectan el bajo acoplamiento y la alta cohesión se debe proceder a asignar un conjunto
de responsabilidades a una clase artificial, esta clase solo se debe crear para este fin y no representa ningún concepto del dominio.
Estas clases pueden llegar a ser muy cohesivas y reutilizables.
Indirección: Este indica cómo evitar el acoplamiento directo entre dos o más elementos. Esto se logra creando un elemento
intermedio que permita la comunicación entre los elementos relacionados.
Variaciones protegidas: Este indica cómo evitar las que las variaciones de algunos elementos no tengan un impacto sobre otros
elementos. Esto se logra por medio de una interfaz bien definida para que estas variaciones sean controladas y estables y de esta
forma se permite la extensión de las variaciones sin afectaciones, reduciendo a su vez el acoplamiento.
intermedio que permita la comunicación entre los elementos relacionados.
Variaciones protegidas: Este indica cómo evitar las que las variaciones de algunos elementos no tengan un impacto sobre otros
elementos. Esto se logra por medio de una interfaz bien definida para que estas variaciones sean controladas y estables y de esta
forma se permite la extensión de las variaciones sin afectaciones, reduciendo a su vez el acoplamiento.
Comentarios
Publicar un comentario