Introducción a los patrones de construcción
Presentación
Los patrones de construcción tienen la vocación de abstraer los mecanismos de creación de objetos. Un sistema que utilice estos patrones se vuelve independiente de la forma en que se crean los objetos, en particular, de los mecanismos de instanciación de las clases concretas.
Estos patrones encapsulan el uso de clases concretas y favorecen así el uso de las interfaces en las relaciones entre objetos, aumentando las capacidades de abstracción en el diseño global del sistema.
De este modo el patrón Singleton permite construir una clase que posee una instancia como máximo. El mecanismo que gestiona el acceso a esta única instancia está encapsulado por completo en la clase, y es transparente a los clientes de la clase.
Problemas ligados a la creación de objetos
1. Problemática
En la mayoría de lenguajes orientados a objetos, la creación de objetos se realiza gracias al mecanismo de instanciación, que consiste en crear un nuevo objeto mediante la llamada al operador new configurado para una clase (y eventualmente los argumentos del constructor de la clase cuyo objetivo es proporcionar a los atributos su valor inicial). Tal objeto es, por consiguiente, una instancia de esta clase.
Los lenguajes de programación más utilizados a día de hoy, como Java, C++ o C#, utilizan el mecanismo del operador new.
En Java, una instrucción de creación de un objeto puede escribirse de la siguiente manera:
objeto = new Clase();
En ciertos casos es necesario configurar la creación de objetos. Tomemos el ejemplo de un método construyeDoc que crea los documentos. Puede construir documentos PDF, RTF o HTML. Generalmente el tipo de documento a crear se pasa como parámetro al método mediante una cadena de caracteres, y se obtiene el código siguiente:
public Documento construyeDoc(String tipoDoc)
{
Documento resultado;
if (tipoDoc.equals("PDF"))
resultado = new DocumentoPDF();
else if (tipoDoc.equals("RTF"))
resultado = new DocumentoRTF();
else...