lunes, 5 de mayo de 2014

Patrones estructurales: Facade

Este post corresponde a la serie Patrones de diseño - Patrones estructurales

Facade

"Proporciona una interfaz unificada para las interfaces de un subsistema. Facade define una interfaz de alto nivel que hace que el subsistema sea más fácil de usar".

El patrón Facade es probablemente uno de los más usados. En mi opinión, que sea tan ampliamente usado, se debe al gran valor que aporta frente a un bajo coste de implementación.

martes, 1 de abril de 2014

Patrones estructurales: Decorator

Este post corresponde a la serie Patrones de diseño - Patrones estructurales

Decorator

"Agrega responsabilidades adicionales a un objeto de forma dinámica. Los decoradores proveen una alternativa más flexible que la herencia para extender la funcionalidad de un objeto".

Para entender cómo y cuándo aplicar este patrón vamos a empezar por ver un ejemplo de aplicación a desarrollar para entender el problema al que nos enfrentamos.


lunes, 17 de marzo de 2014

Patrones estructurales: Composite

Este post corresponde a la serie Patrones de diseño - Patrones estructurales

Composite

"Compone objetos en estructuras de tipo árbol para representar jerarquías del tipo parte-todo. Permite que el cliente trate de forma uniforme tanto un objeto como una composición de objetos".

Son muchas las situaciones en las que nos encontramos ante estructuras de datos de tipo árbol como se explica en el enunciado del patrón Composite. Un problema típico con este tipo de estructuras es que debemos tratar de forma diferente a los nodos hoja (los nodos que están al final de la rama, sin hijos) de los nodos que no lo son.

martes, 4 de marzo de 2014

Patrones estructurales: Bridge

Este post corresponde a la serie Patrones de diseño - Patrones estructurales

Bridge

"Desacopla una abstracción de su implementación de forma que ambas pueden variar de manera independiente".

Como ya hemos hecho en otras ocasiones vamos a estudiar detenidamente la definición de este patrón, tratar de entender qué dice y después veremos cómo y dónde aplicarlo.

Cuando tenemos una abstracción que puede tener diferentes implementaciones normalmente usamos herencia para resolver la situación. Es decir, una clase abstracta define la interfaz de la abstracción y las clases hijas concretas implementan cada una hace su propia implementación.

jueves, 20 de febrero de 2014

Patrones estructurales: Adapter

Este post corresponde a la serie Patrones de diseño - Patrones estructurales

Adapter

"Cambia la interfaz de una clase en otra interfaz que espera el cliente. El Adapter permite trabajar juntas a clases que de otra forma no podrían porque tienen interfaces incompatibles".

La definición del patrón Adapter dice que cambia la interfaz de una clase por otra interfaz para que podamos utilizarla desde un cliente. Hay que entender que la clase a la que queremos cambiar la interfaz tiene la funcionalidad que necesitamos pero no cumple la interfaz que requiere nuestra clase cliente.

viernes, 7 de febrero de 2014

Patrones de creación: Singleton

Este post corresponde a la serie Patrones de diseño - Patrones de creación

Singleton

"Asegura que una clase tiene una sola instancia, y provee un punto de acceso global a esta instancia."

El patrón Singleton es probablemente el más sencillo de los patrones definidos por GoF. Debido a esto es frecuentemente sobre utilizado y a veces de forma incorrecta. Esto no quiere decir que el Singleton sea un patrón malo que no deba utilizarse, sino que, debe usarse en su justa medida y en el contexto correcto.

miércoles, 29 de enero de 2014

Patrones de creación: Prototype

Este post corresponde a la serie Patrones de diseño - Patrones de creación

Prototype

"Especifica los tipos de objetos a crear usando una instancia como prototipo y crea nuevos objetos copiando ese prototipo"

El patrón Prototype es ampliamente conocido, el framework .NET lo implementa mediante la interfaz ICloneable que declara el método Clone(), sin embargo no siempre es comprendido en profundidad.

Prototype es un patrón de creación y se basa en crear objetos mediante la clonación.

lunes, 20 de enero de 2014

Patrones de creación: Factory Method

Este post corresponde a la serie Patrones de diseño - Patrones de creación

Factory Method

"Define una interfaz para crear un objeto, pero deja que sean las subclases las que deciden que objeto instanciar. Factory Method permite a la clase diferir la instanciación del objeto a las subclases".

En el post sobre Abstract Factory ya vimos, aunque de pasada, el patrón Factory Method. Abstract Factory se centra en crear familias de objetos y cada uno de los objetos de la familia se crean habitualmente mediante Factory Method.

miércoles, 8 de enero de 2014

Patrones de creación: Builder

Este post corresponde a la serie Patrones de diseño - Patrones de creación

Builder

"Separa la construcción de un objeto complejo de su representación, de forma que el mismo proceso de construcción puede crear representaciones distintas"

Como en la mayoría de patrones de diseño entender la definición a primera vista es difícil. Intentaré explicar exactamente qué quiere decir esta definición del patrón Builder.
La idea fundamental es separar la lógica de construcción de los objetos resultantes, de esta forma podemos reutilizar la misma lógica de construcción pero obtener distintos objetos complejos.