October 2008

Patrones de diseño. Abstract Factory Pattern

Introducción

La idea detrás del patron Abstract Factory (que en español se traduciría como fabrica abstracta) consiste en la noción de que nuestro programa (o el cliente de una clase que nosotros proporcionamos) trabaja con una serie de productos (como los de una fábrica) que tienen unas determinadas características (por ejemplo tenemos productos embotellados y productos en tetrabrick). Nuestro programa va a utilizar dichos productos realizando una serie de acciones sobre ellos (como meter las botellas en unos camiones y los tetrabricks en otros) sin importarle quien le está suministrando los productos.

Así mismo existen una serie de fábricas que producen esos productos que vamos a tratar, una fábrica fabrica cocacola y otra pepsi pero ambas en botellas de las que nuestro programa trata. Al final, el concepto básico consiste en que a nuestro programa (o cliente) no le importa lo que haya dentro de la botella ni quien lo haya producido mientras sea una botella.

El punto de vista software

Desde el punto de vista software el ejemplo anterior se traduce en una situación en la que nuestro programa maneja un tipo de objetos con unas características comunes y algunas caracterísiticas propias. Esto en general en software se resuelve mediante el uso de dos características de los lenguajes de programación orientados a objetos, las clases+abstractas+y+los+interfaces.

Patrones de diseño. Adapter Pattern

Introducción

El patrón Adapter (o adaptador), también conocido a veces como wrapper realiza la función, como su nombre indica de adaptar (o envolver) una determinada clase cambiando el interfaz de dicha clase y convirtiendolo en algo que se acerque más a nuestras necesidades.

En muchas ocasiones tenemos una clase que hace lo que necesitamos (o se aproxima mucho) y cumple todos los requisitos para que alguna otra clase la use pero, al no implementar un determinado interface o derivar de una determinada clase esto no es posible.

Problema

En un determinado punto del código se espera una instancia de un determinado interfaz o de una determinada clase. Deseamos utilizar una clase distinta que cumple todos los requisitos del interfaz o de la clase concreta que se espera en el código pero que, sin embargo, por las razones que sean no implementa dicho interfaz.

Introducción a .NET

Prólogo

Este artículo es tan solo una somera introducción a la tecnología .NET dando un repaso a sus principales características y explicando de forma breve el funcionamiento del CLR y de los assemblies de .NET de forma que, cuando trabajemos con referencias a ensamblados o bien usemos el System.Reflection tengamos una idea de que estamos haciendo. Buena parte de lo que yo se de este tema viene de dos libros que recomiendo a todo aquel que quiera tener una visión más detallada de .NET (ambos en inglés aunque no se si existen también en español)

  • Professional .NET Framework. Joe Duffy. Yo recomendaría este libro para [b]empezar a conocer los entresijos de .NET[/b], es decir, como funciona el CLR, que es el CIL, las librerías del framework... (aunque es muy recomendable por lo menos conocer c#, que es el lenguaje en el que están la mayoría de los ejemplos, y haber hecho algún programilla aunque sea pequeño)
  • Essential .NET, Volume 1. Don Box. Es un libro bastante exhaustivo que describe los fundamentos de .NET y del CLR con mucha eficacia aunque, como el mismo Don Box advierte en el prefacio, de forma bastante ardua, "poco para principiantes".