Introducción a los patrones de construcción
Presentación
Los patrones de diseño de construcción tienen la vocación de abstraer los mecanismos que permiten crear objetos. Un sistema que utilice estos patrones de diseño 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 de diseño 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 de diseño 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 para 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 en la actualidad, como PHP, C++ o C#, utilizan el mecanismo del operador new.
En PHP, una instrucción de creación de un objeto se escribe 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:
class ConstructorDocumento
{
protected Documento $resultado;
public function construyeDoc(string $tipoDoc): Documento
{
if ($tipoDoc == 'PDF') {
$resultado...