PHP: el patrón Adaptador, cómo se implementa y cuándo usarlo

2022-01-31 - Categorías: General / PHP / Principios y patrones
Pieces, design patterns, principles, patrones de diseño

Este patrón de diseño de software es el de Adaptador, se puede usar para conectar con otros sistemas. Simplemente utiliza una interfaz para definir un contrato de uso que luego se reutiliza implementando clases que la implementan.

Por ejemplo, supongamos que queremos guardar cadenas de caracteres. Este guardar, es lo que queremos hacer, independientemente de si se hace en memoria, en un fichero, una base de datos Postgres/Mysql/etc.. entonces cada implementación del guardado, es un adaptador, porque adapta conectando el sistema informático con el destino del guardado de forma transparente.

Show me the code, código fuente en PHP

Por ejemplo si queremos almacenar información sobre algo:

<?php

class Something
{
    public $string;
}

Entonces podemos definir un contrato de uso con una función de guardado:

<?php

interface IAdapter
{
    public function save(Something $something);
}

Un adaptador podría ser para guardar ese algo en memoria RAM simplemente en un array:

<?php

class StoreInMemoryAdapter implements IAdapter
{
    private $data = [];

    public function save(Something $something)
    {
        $this->data[] = $something;
    }
}

Otro adaptador podría implementar la misma función de guardado save(), pero esta vez almacenando ese algo en un fichero:

<?php

class StoreInFileAdapter implements IAdapter
{
    public function save(Something $something)
    {
        file_put_contents('file.txt', $something->string.PHP_EOL, FILE_APPEND);
    }
}

Recapitulando, con el patrón adaptador, ponemos una capa de software que son los adaptadores, para conectar la información teniendo una interfaz de comunicación común.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

© 2024 JnjSite.com - MIT license

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