PATRONES GRAPS Experto en información (Experto) Es asignar responsabilidades a las clases dependiendo de la información que estas posean. “Quien es el responsable” Beneficios: Conservación del encapsulamiento Bajo acoplamiento Alta cohesión Creador Una clase B es creadora cuando se le asigna la responsabilidad de crear una instancia de la clase A si se cumple por lo menos una de las siguientes condiciones: • • • • • B agrega objetos de A. B contiene objetos de A. B registra instancias de objetos de A. B utiliza más estrechamente objetos de A. B tiene los datos de inicialización que se pasaran de un objeto A cuando sea creado. Por lo tanto B es un experto en la creación de A. Beneficio Bajo acoplamiento Si observamos el ejemplo, identificamos fácilmente que la universidad es la encargada de crear las matriculas y que esta lo hace ya que cumple los requisitos necesarios nombrados anteriormente, es por eso que la clase UNIVERSIDAD es EXPERTA crear MATRICULAS. Bajo acoplamiento Es asignar una responsabilidad de manera que el acoplamiento permanezca bajo. El Acoplamiento es la medida de fuerza con que un elemento esta conectado a, tiene conocimiento de, confía en, otros elementos. Una clase tiene bajo acoplamiento si esta no depende de demasiados otros elementos. Beneficio No se afectan por cambio en otros componentes Fáciles de entender por separado Fáciles de reutilización Un posible diagrama de clases para el ejemplo usado anteriormente seria el siguiente… Pero si nos guiamos en el patrón de bajo acoplamiento vemos que la clase UNIVERSIDAD tiene demasiadas conexiones, otra posibilidad de modelar el problema seria… Alta cohesión Una clase tiene alta cohesión cuando las relaciones de esta estén muy relacionadas y no tengan mucho trabajo. Asignar responsabilidades de manera que la cohesión permanezca alta. Mantener la complejidad manejable. Beneficios Mejoran la claridad del diseño Simplificación del cambio Genera bajo acoplamiento Facilita la reutilización Controlador Una clase es controladora cuando se le asigna la responsabilidad de recibir o manejar un mensaje de evento del sistema a una clase que representa una de las siguientes opciones: • • Representa el sistema global, dispositivo o subsistema (Controlador de fachada ) Representa un escenario de casos de uso en el que tiene lugar un evento de sistema Un controlador es el responsable de gestionar un evento de entrada. Delega el trabajo a otros objetos no hacen nada por si mismos Beneficio Mayor potencial de los componentes reutilizables Fachada Es un caso especial de un controlador, oculta el sistema bajo una clase, pueden existir varias. Beneficio Permite tener bajo acoplamiento entre subsistemas. La clase universidad, es fácilmente identificada como la clase mas saturada lo que contradice el patrón de Alta Cohesión, según este, las clases deberían tener responsabilidades muy relacionadas y que al mismo tiempo, no se “esfuercen” mucho para hacer funcionar el sistema. A diferencia del anterior diagrama, podemos ver que universidad funciona como una controladora del sistema, y como una fachada entre toda la burocracia interna de la universidad y el estudiante, este diagrama además, muestra que la clase UNIVERSIDAD posee alta cohesión, puesto que ya no trabaja para las demás clases creando instancias y asignándolas, sino que solo acciona los métodos necesarios para que las otras clases realicen sus responsabilidades, estas a su vez no solo se enfocan en sus muy relacionadas y limitadas responsabilidades.