PHP: el patrón de diseño del software Fachada/Facade

2022-02-02 - Categorías: General / PHP / Principios y patrones

Siguiendo con el repaso en PHP de los patrones de diseño del software, llegamos al patrón Fachada o Facade en inglés. Es bien sencillo, consiste simplemente en poner una clase u objeto en medio, para que se encargue de simplificar el manejo en conjunto del programa.

Es decir, suele haber tareas complejas, con varios pasos, o en las que intervienen varios elementos. Entonces, para simplificar todo, se llama a la clase de fachada para simplificar la programación y mantenimiento.

Al grano, cómo programar una fachada en PHP

Es más sencillo leer el fuente y verlo. Un esquema posible sería el siguiente:

Primero el cliente que usa la fachada:

<?php

class Client
{
    public function main()
    {
        $facade = new Facade();

        $facade->doSomethingComplex();
    }
}

..llama al método complejo, pero es simple su llamada. Entonces la fachada se encarga de hacer todo el conjunto de tareas de forma transparente para el cliente. Es simple para el cliente, aunque la tarea en sí misma puede ser muy compleja:

<?php

class Facade
{
    public function doSomethingComplex()
    {
        $object1 = new Object1();
        $object2 = new Object2();
        $object3 = new Object3();

        $object1->doSomethingLessComplex();
        $object2->doSomethingLessComplex();
        $object3->doSomethingLessComplex();
    }
}

..y así sucesivamente, los tres objetos restantes que encapsulan partes de la tarea compleja, aplicando una división del problema complejo, en otros más sencillos:

<?php

class Object1
{
    public function doSomethingLessComplex()
    {
        /*
         * Here goes something less complex..
         */
    }
}
<?php

class Object2
{
    public function doSomethingLessComplex()
    {
        /*
         * Here goes something less complex..
         */
    }
}
<?php

class Object3
{
    public function doSomethingLessComplex()
    {
        /*
         * Here goes something less complex..
         */
    }
}

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

 

© 2022 JnjSite.com - MIT license

Sitio hecho con WordPress, diseño y programación del tema por Jnj.