Patrones grasp controlador

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 17,69 KB

GRASP-
1 - Experto en Información

P- ¿Un principio general del diseño De objetos y la asignación de responsabilidades?

R-
Asignar Responsabilidades al experto de La información, es decir, a la clase Que tiene la información necesaria para llevar la tarea a cabo.

Cons

Encapsulamiento de la información y, por ende, el bajo Acoplamiento.

El comportamiento distribuido entre las clases, es decir, clases más Cohesivas.

Ej-


En La aplicación punto de venta, alguna Clase necesita conocer el gran total de la venta.

Se Plantea esta pregunta: ¿Quién es el Responsable de conocer el gran total de la venta?

Para calcular el total hay que conocer todas las instancias
VentasLineadeProducto de una venta y La suma de sus subtotales.
Y esto conoce únicamente La instancia Venta;
Desde el punto De vista del Experto, Venta es la clase correcta para asumir esta Responsabilidad; es el experto en información.

Cont-
En algunas ocasiones no es una guía Deseable sobre todo por problemas de Cohesión, acoplamiento y duplicación de código.
(Si venta debe Ser almacenada en una base de datos, el Experto sugiere a Venta como Responsable, pues contiene mucha de la información a almacenar

Patr-
Bajo Acoplamiento y Alta Cohesión.

GRASP-
2 - Creador

P-¿Quién debe ser responsable en la creación De una nueva instancia de una clase?

R- Una clase B tiene la responsabilidad para crear Una instancia de la clase A (si cumple alguna):

B agrega objetos de A.

B contiene objetos de A.

B almacena objetos de A.

B usa objetos de A.

B tiene los datos necesarios para inicializar A A cuando este es creado

Cons-

Soporta el bajo acoplamiento, es decir, este no se Incrementa.

Ej

En la aplicación PDV, ¿quién debería crear una LineaDeVenta?
Venta de hecho contiene (agrega) muchos objetos de LIneaDeVenta, debe tener, por lo tanto, la responsabilidad de la Creación de instancias de esta clase y por lo tanto contener un método crearLineaDeVenta.

Cont-
A menudo la creación de instancias es una tarea Compleja, en estos casos es aconsejable delegar la creación a una clase Auxiliar denominada Factoría.

Patr-
Bajo Acoplamiento Y Factoría.

GRASP-
3 - Bajo Acoplamiento

P- ¿Cómo dar soporte a una dependencia escasa Y a un aumento de la reutilización?

R- Asignar Responsabilidades de tal manera que el acoplamiento sea el menor posible

Cons

Mejor compresión de las clases aisladas.

Facilitan la reutilización de código.

No afectan los cambios en otros Componentes.

Ej-


Suponiendo Que se necesita crear una instancia Pago y asociarla a Venta. ¿Qué clase se Encargará de hacer esto?

Puesto que una Instancia TPDV registra un Pago, el patrón Creador indica que TPDV es un buen Candidato para producir el Pago. La instancia TPDV podría entonces enviarle a Venta el mensaje agregarPago, transmitiendo al mismo tiempo el nuevo Pago como Parámetro.

Patr-

Variaciones Protegidas


GRASP-
4 - Alta Cohesión

P- ¿Cómo mantener la complejidad dentro de Los límites manejables?

R- Asignar una responsabilidad de modo que La cohesión siga siendo alta

Cons

Se incrementa la claridad y facilita la Comprensión, se simplifica el mantenimiento.

Implica casi siempre bajo acoplamiento, Incrementando la reutilización.

Ej-
Este ejemplo es una contradicción, es Decir, el ejemplo va en contra del patrón de Alta Cohesión.

Patr-

Bajo Acoplamiento


GRASP-
5 - Controlador

P- ¿Quién debería encargarse de atender un Evento del sistema?

R-
Asignar la responsabilidad del manejo de Un mensaje de los eventos de un sistema a una clase que represente una de las Siguientes opciones:

· El sistema global: controlador de fachada.

·La empresa u organización global: Controlador de fachada.

· Algo en el mundo real que es activo y Que pueda participar en la tarea: controlador de tareas.

· Un manejador artificial de todos los Eventos del sistema de un caso de uso: controlador de casos de uso.

Cons

Potencial para reutilizar interfaces Conectables.

Razonamiento sobre el funcionamiento de Los casos de uso, es decir, valida la secuencia de operaciones, capturando Información de estado.

Ej-


¿Quién Debería ser el controlador de eventos sistémicos como introducirProducto y terminarVenta?

De acuerdo con el patrón Controlador, Disponemos de las siguientes opciones:

TPDV

Representa el “sistema” Global.

Tienda

Representa la empresa u Organización global.

Cajero

Representa algo en el mundo Real que está activo (por ejemplo, el papel de una persona) y que puede Intervenir en la tarea.

ManejadordeComprarProductos

Representa un manejador artificial de todas las operaciones del sistema de un Caso de uso.

Patr-
Command, Fachada, Capas, Fabricación Pura.

GRASP-
6 - Polimorfismo

P- ¿Cómo manejar las alternativas basadas en El tipo? ¿De qué manera crear componentes software conectables?

R-
Cuando el comportamiento relacionado Varía según el tipo (clase) asigne la responsabilidad para el comportamiento [utilizando operaciones polimórficas] a los tipos para los que varía el Comportamiento.


Evítense las comprobaciones acerca del Tipo de un objeto y procure no utilizar la lógica condicional.

Cons

Se añaden fácilmente extensiones Necesarias para nuevas variaciones.

Las nuevas Implementaciones se introducen sin afectar a los clientes.

Ej

Patr-
Variaciones Protegidas, Varios de los patrones de diseño GoF como Adaptador, Command, Composite, Proxy, Estado y Estrategia.


GRASP-
7 – Fabricación Pura

P-¿Qué objetos deberían tener la Responsabilidad cuando no se quiere violar los objetivos de alta cohesión y Bajo acoplamiento?

R-
Asigne un conjunto de responsabilidades Altamente cohesivas a una clase artificial que no representa un concepto del Dominio.

Cons

Se soporta alta cohesión puesto que las Responsabilidades se factorizan en una clase de grano fino.

El potencial para reutilizar aumenta.

Ej-
Se necesita soporte para almacenar la Venta en una base de datos se podría suponer según el Experto que la Propia clase debería tener la responsabilidad.

La Tarea implica un número amplio de operaciones de bases de datos no relacionadas Con las ventas (Baja cohesión)
.

Además tiene que acoplarse con el Interfaz de la base de datos.

Y por último la tarea de almacenar objetos puede ser Necesaria para más objetos.

Podríamos crear una clase AlmacenamientoPersistente.

Cont-
Llevar el principio al extremo.

Patr-
Bajo Acoplamiento, Alta Cohesión, los GoF (Adaptador, Command, Estrategia, etc) Y prácticamente el resto de patrones de diseño.

GRASP-
8 - Indirección

P- ¿Dónde asignar una responsabilidad para Evitar el acoplamiento directo entre dos objetos?

R-
Asigne la responsabilidad a un objeto Intermedio que medie entre otros componentes para que no estén acoplados Directamente, el intermediario crea un indirección.

Cons-
Disminuye el acoplamiento entre Componentes.

Ej-
Muchos de los patrones existentes son Especializaciones de Indirección.

Patr-
Está relacionado con Variaciones Protegidas, Bajo Acoplamiento, muchos GoF como Adaptador, Puente, Fachada, Observador y Mediador.

GRASP-
9 – Variaciones Protegidas

P- ¿Cómo diseñar componentes de manera que Las variaciones en ellos no tengan repercusión en otros elementos?

R-
Asigne responsabilidades para crear una Interfaz estable alrededor de los puntos de variaciones previstas o Inestabilidad.

Cons

Se añaden fácilmente las extensiones para Nuevas variaciones.

Se pueden introducir nuevas Implementaciones sin afectar a los clientes.

Se reduce el Acoplamiento.

Ej-
Mediante la Indirección de la interfaz y El polimorfismo se consigue una protección frente a las variaciones en las Interfaces externas, integrando el sistema con otros sistemas externos.

Patr-
La mayoría de los patrones son mecanismos De Variaciones Protegidas.
Se Relaciona con Polimorfismo, Indirección y la mayor parte de los GoF.


GoF - 1 - Singleton (creación)

P-¿Cómo Podemos asegurar que una clase tiene exactamente una única instancia y que ésta sea fácilmente accesible?

R-Defina un método estático de la clase que devuelva el Singleton

Cons

Permite El manejo de objetos únicos y que sean accesibles a otros objetos.

Acceso Controlado a la única instancia.

Ej

Patr-


Se utiliza a menudo Para Factoría y Fachada.

GoF-
2 - Factoría (creación)


P-¿Quién es el responsable de la creación de objetos Cuando existen consideraciones especiales, como una lógica de creación compleja O el deseo de separar las responsabilidades de la creación para mejorar la Cohesión?


R-Cree un objeto Fabricación Pura denominado Factoría (Factoría Concreta) que resuelva la creación Cuando existan consideraciones especiales.

Cons

Separar La responsabilidad de la creación compleja en objetos de apoyo.

Ocultar La lógica de creación potencialmente compleja.

Permitir Introducir estrategias para mejorar el rendimiento de la gestión de memoria.

Ej-


¿Quién crea Adaptador y cuál debería crearse?

Si Se encarga a algún objeto de dominio excedería la lógica de la aplicación o Disminuiría su cohesión. Resulta mejor asignar a una FactoriaDeServicios dicha responsabilidad, así se crea el Adaptador Dinámicamente. De esta manera se podría cambiar de Adaptador sin cambiar Código.

Patr-
A menudo se accede a las factorías con el Patrón Singleton

GoF-
4 -Adaptador-Wrapper (estructural)


P-¿Cómo resolver interfaces incompatibles, o Proporcionar una interfaz estable para componentes parecidos con diferentes Interfaces?


R-Convierta la interfaz de una clase en otra interfaz Que es la que esperan los clientes, permite que cooperen clases que de otra Forma no podrían cooperar por tener interfaces incompatibles.

Cons

·Posibilidad De reutilizar las clases que han sido pensadas para este Objetivo pero que Tenían interfaces no compatibles con el sistema en desarrollo.

·Un adaptador de objetos permite adaptar una clase y sus subclases, puede funcionar Para varios adaptables.

Ej-


El Adaptador Ofrece Variaciones Protegidas en Paquetes de terceras partes mediante un objeto Indirección que aplica Interfaces Y Polimorfismo.

Participantes

Objetivo-
Define la interfaz que utiliza el Cliente.

   Cliente-Colabora con objetos que se ajustan a la interfaz Objetivo.

   Adaptable-
Define una interfaz existente que necesita ser adaptada.

   Adaptador-
Adapta la interfaz de Adaptable a la interfaz Objetivo.


Patr-
Un adaptador de recursos oculta que un Sistema externo podría también ser considerado un objeto Fachada puesto que envuelve el acceso al subsistema o sistema con Un único objeto (Que es la esencia de la Fachada)
. Sin embargo, el nombre de Adaptador está Motivado especialmente cuando el objeto que envuelve facilita la adaptación a Diversas interfaces externas.


GoF-
5 -Composite (estructural)

P-¿Cómo Tratar un Grupo o una estructura compuesta del mismo modo que un objeto atómico?

R- Defina Las clases para los objetos compuestos y atómicos de manera que implementen el Mismo interfaz

Cons

Define Jerarquías parte/todo.

Los Clientes ignoran la diferencia entre objetos compuestos y objetos individuales Que los forman, pueden tratar objetos primitivos y compuestos de modo uniforme.

Jerarquía Con clases que modelan objetos primitivos y objetos compuestos, se permite Composición recursiva.

Es Fácil añadir nuevos tipos de componentes.

Ej-


Se puede crear una estrategia que implemente la misma Interfaz y que al mismo tiempo englobe varias estrategias, se van añadiendo en Distintos puntos.

Participantes

Componente-
Declara La interfaz para los objetos de la composición e implementatambién los métodos que determinan el comportamiento de las Diferentes clases tanto compuestas como hijas y permite tener acceso a Componentes en la estructura recursiva.

Hoja-
Define el comportamiento de los Objetos que no tienen hijos en la composición.

Compuesto-
Maneja Los hijos de los diferentes componentes compuestos y determinael comportamiento de aquellos Componentes capaces de tener hijos.

Cliente-
Manipula Los objetos de la composición a través del componente.

Patr-
El Patrón Composite se utiliza Normalmente junto con los patrones Estrategia Y Command.
El Composite se basa en Poliformismo Y proporciona Variacios Protegidas a Los clientes de manera que no les afecta si el objeto con el que se relacionan Es atómico o compuesto.


GoF-
8 -Estrategia (comportamiento)

P-¿Cómo Diseñar Diversos algoritmos o políticas que estén relacionadas? ¿Cómo diseñar que éstos Puedan cambiar?

R-Defina cada algoritmo, política o estrategia en una Clase independiente con una interfaz común

Cons

Configurar Una clase con uno de varios comportamientos posibles.

Se Necesitan diferentes variantes de un algoritmo para un mismo comportamiento.

Una Clase define muchos comportamientos que aparecen como sentencias CASE en sus Métodos, elimina sentencias CASE.

El Cliente puede elegir entre diferentes estrategias o implementaciones pero debe conocer Los detalles que las diferencian.

Participantes

Estrategia-
Interfaz común a Todos los algoritmos permitidos.

Estrategia concreta-
Implementa Los algoritmos correspondientes, usando la interfazEstrategia.

Contexto-
Mantiene Una referencia al objeto Estrategia, se configura con un objetoEstrategia Concreta.

Ej

Patr-


Se crea mediante una Factoría que se accede como Singleton.

Entradas relacionadas: