Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Resumen Patrones

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 9

Composición vs Herencia

Una de las formas de superar estas advertencias es utilizar la composición en lugar de la herencia.
Con la composición un objeto tiene una referencia a otro y le delega algún trabajo, mientras que
con la herencia, el propio objeto es capaz de hacer ese trabajo, heredando el comportamiento de
su superclase.

Relaciones entre objetos

Asociación

La asociación es un tipo de relación en la que un objeto utiliza o interactúa con otro. En los
diagramas UML la relación de asociación se muestra mediante una simple flecha dibujada desde
un objeto y que apunta al objeto que utiliza. En general, se utiliza una asociación para representar
algo como un atributo que contiene una clase.

Dependencia

La dependencia es una variante más débil de la asociación que suele implica que no hay un vínculo
permanente entre los objetos.

La dependencia suele implicar (aunque no siempre) que un objeto acepta otro objeto como
parámetro de un método, lo instancian o utiliza otro objeto. Así es como se puede detectar una
dependencia entre clases: existe una dependencia entre dos clases si cambios en la definición de
una clase provocan modificaciones en otra clase.

Composición

La composición es una relación de "parte entera" entre dos objetos, uno de los cuales está
compuesto por una o más instancias del del otro. La distinción entre esta relación y otras es que el
componente sólo puede existir como parte del contenedor.

En UML la relación de composición se muestra mediante una línea con un diamante relleno en el
extremo del contenedor y una flecha en el extremo apuntando hacia el componente.
Agregación

La agregación es una variante menos estricta de la composición, en la que un objeto simplemente


contiene una referencia a otro. El contenedor no controla el ciclo de vida del componente. El
componente puede existir sin el contenedor y puede estar vinculado a varios contenedores al
mismo tiempo.

Tipos de patrones

 Los patrones creacionales proporcionan mecanismos de creación de objetos que aumentan


la flexibilidad y la reutilización del código existente.
 Los patrones estructurales explican cómo ensamblar objetos y clases en estructuras más
grandes, manteniendo las estructuras flexibles y eficientes.
 Los patrones de comportamiento se encargan de la comunicación efectiva y la asignación
de responsabilidades entre los objetos.
PATRONES

Adapter

El adapter es un patrón de diseño estructural que permite que objetos con interfaces
incompatibles colaboren entre sí.

Es un objeto especial que convierte la interfaz de un objeto para que otro objeto pueda
entenderla.

Un adapter envuelve uno de los objetos para ocultar la complejidad de la conversión que se
produce por detrás. El objeto envuelto ni siquiera es consciente del adaptador.

TIPS

 Utiliza la clase Adapter cuando quieras utilizar alguna clase existente, pero su interfaz no es
compatible con el resto de tu código.
 El patrón Adapter te permite crear una clase de capa intermedia que sirve como traductor
entre tu código y una clase heredada, una clase de terceros o cualquier otra clase con una
interfaz extraña
 Utiliza el patrón cuando quieras reutilizar varias subclases existentes que carecen de alguna
funcionalidad común que no puede ser añadida a la superclase.
Strategy

Strategy es un patrón de diseño de comportamiento que le permite definir una familia de


algoritmos, poner cada uno de ellos en una clase separada y hacer que sus objetos sean
intercambiables.

El patrón Strategy sugiere que se tome una clase que hace algo específico de muchas maneras
diferentes y se extraigan todos estos algoritmos en clases separadas llamadas estrategias.

La clase original, llamada contexto, debe tener un campo para almacenar una referencia a una de
las estrategias. El contexto delega el trabajo a un objeto de estrategia vinculado en lugar de
ejecutarlo por sí mismo.

El contexto no es responsable de seleccionar un algoritmo apropiado para el trabajo. En su lugar,


el cliente pasa la estrategia deseada al contexto.

De este modo, el contexto se independiza de las estrategias concretas.

TIPS

 Utilice el patrón Strategy cuando desee utilizar diferentes variantes de un algoritmo dentro
de un objeto y poder cambiar de un algoritmo a otro durante el tiempo de ejecución.
 El patrón Strategy le permite alterar indirectamente el comportamiento del objeto en
tiempo de ejecución asociándolo con diferentes sub-objetos que pueden realizar subtareas
específicas de diferentes maneras.
 Utiliza Strategy cuando tengas muchas clases similares que sólo se diferencian en la forma
de ejecutar algún comportamiento
 El patrón Strategy le permite extraer el comportamiento variable en una jerarquía de clases
separada y combinar las clases originales en una sola, reduciendo así el código duplicado.
 Utilice el patrón para aislar la lógica de negocio de una clase de los detalles de
implementación de los algoritmos que pueden no ser tan importantes en el contexto de esa
lógica.
 Utilice el patrón cuando su clase tenga un operador condicional masivo que cambia entre
diferentes variantes del mismo algoritmo.

Composite

Composite es un patrón de diseño estructural que permite componer objetos en estructuras de


árbol y luego trabajar con estas estructuras como si fueran objetos individuales.

El patrón Composite permite ejecutar un comportamiento de forma recursiva sobre todos los
componentes de un árbol de objetos.

TIPS

 El patrón Composite proporciona dos tipos de elementos básicos que comparten una
interfaz común: hojas simples y contenedores complejos. Un contenedor puede estar
compuesto tanto por hojas como por otros contenedores. Esto le permite construir una
estructura de objetos recursiva anidada que se asemeja a un árbol.
 Utilice este patrón cuando desee que el código del cliente trate los elementos simples y
complejos de manera uniforme.
 Todos los elementos definidos por el patrón Composite comparten una interfaz común.
Utilizando esta interfaz, el cliente no tiene que preocuparse por la clase concreta de los
objetos con los que trabaja.
Decorator

El decorador es un patrón de diseño estructural que permite adjuntar nuevos comportamientos a


los objetos colocando estos objetos dentro de wrappers que contienen los comportamientos.
Agrega funcionalidades dinámicamente a un objeto sin romper su interfaz. Intercepta mensajes.

TIPS

 Utiliza el patrón Decorator cuando necesites poder asignar comportamientos adicionales a


los objetos en tiempo de ejecución sin romper el código que utiliza estos objetos.
 Utilice el patrón cuando sea incómodo o no sea posible extender el comportamiento de un
objeto comportamiento de un objeto mediante la herencia.

State

El state es un patrón de diseño de comportamiento que permite a un objeto alterar su


comportamiento cuando su estado interno cambia. Es como si el objeto hubiera cambiado de
clase. Genera una abstracción (una clase) por cada posible estado que pueda tener un objeto.
Define transiciones entre los posibles estados

Esta estructura puede parecer similar al patrón de la Estrategia, pero hay una diferencia clave. En
el patrón Estado, los estados particulares estados pueden conocerse entre sí e iniciar transiciones
de de un estado a otro, mientras que las estrategias casi nunca saben sobre los demás.
TIPS

 Utilice el patrón Estado cuando tenga un objeto que se comporte diferente dependiendo de
su estado actual, el número de estados es enorme, y el código específico del estado cambia
con frecuencia.
 El patrón sugiere que se extraiga todo el código específico del estado en un conjunto de
clases distintas. Como resultado, puede añadir nuevos estados o cambiar los existentes de
forma independiente, reduciendo el coste de mantenimiento.
 Utilice el patrón cuando tenga una clase contaminada con masivas condicionales que
alteran el comportamiento de la clase en función de los valores actuales de los campos de la
clase.
 El patrón State te permite extraer ramas de estos condicionales en métodos de las clases de
estado correspondientes. Mientras se hace esto, también se pueden limpiar los campos
temporales y los métodos de ayuda involucrados en el código específico del estado fuera de
su clase principal.
 Utilice State cuando tenga mucho código duplicado en estados y transiciones similares de
una clase basada en condiciones. estados y transiciones similares de una máquina de
estados basada en condiciones.
Observer

El observador es un patrón de diseño de comportamiento que permite definir un mecanismo de


mecanismo de suscripción para notificar a múltiples objetos sobre cualquier eventos que suceden
al objeto que están observando.

TIPS

 Utilice el patrón Observador cuando los cambios en el estado de un objeto pueden requerir
el cambio de otros objetos, y el conjunto real de objetos es desconocido de antemano o
cambia dinámicamente.
 Utilice este patrón cuando algunos objetos de su aplicación deban observar otros, pero sólo
por un tiempo limitado o en casos específicos.
Command

El comando es un patrón de diseño de comportamiento que convierte una solicitud en un objeto


independiente que contiene toda la información sobre la solicitud.

✓ Genera una abstracción por cada acción que se quiere realizar, encapsulando cada
comportamiento en una clase.

✓ Permite enviar órdenes para que alguien las realice en ese momento o en un momento
posterior, sin interesar quién es el receptor de éstas.

TIPS

 Utilice el patrón Command cuando quiera parametrizar objetos con operaciones.


 El patrón Command puede convertir una llamada a un método específico en un objeto
independiente. Este cambio abre un montón de usos interesantes: puedes pasar comandos
como argumentos de métodos, almacenarlos almacenarlos dentro de otros objetos,
cambiar los comandos vinculados en tiempo de ejecución, etc.
 Utilice el patrón de comandos cuando quiera poner en cola operaciones, programar su
ejecución, o ejecutarlas remotamente.
 Utiliza el patrón Command cuando quieras implementar operaciones reversibles.

También podría gustarte