Blog de Gonzalo

Blog de programación de Gonzalo López

PATRÓN STRATEGY EN PHP

PHP

El patrón strategy es un patrón de diseño de comportamiento que convierte un grupo de comportamientos en objetos y los hace intercambiables dentro del objeto de contexto original. Supongamos que necesitamos hacer varias acciones en diferentes sitios, por ejemplo publicar en diferentes redes sociales u obtener información por ejemplo, bolsa y cambio de divisas.
Con el patrón strategy nos permite hacer todo más fácil. Veamos une ejemplo de patrón strategy en php:


interface publishOnSocialNetwork
{
    public function publish(string $post): bool;
}

class facebook implements publishOnSocialNetwork
{
    public function publishPost(string $post): bool;
    {
        //facebookObject: Supuesto objeto de facebook con nuestros credenciales para publicar post, subir fotos, etc..
        //publish: Supuesto método para publicar un post en facebook
        return $facebookObject->publish($post);
    }
}

class twitter implements publishOnSocialNetwork
{
    public function publishPost(string $post): bool;
    {
        //twitterObject: Supuesto objeto de facebook con nuestros credenciales para publicar post, subir fotos, etc..
        //publish: Supuesto método para publicar un post en facebook
        return $twitterObject->publish($post);
    }
}

class SocialNetwork
{
    private $socialNetwork;

    public function __construct(publishOnSocialNetwork $socialNetwork)
    {
        $this->socialNetwork = $socialNetWotk;
    }

    public function setSocialNetwork(publishOnSocialNetWork $socialNetwork)
    {
        $this->socialNetwork = $socialNetwork;
    }

    public function publish($text): void
    {
        // ...
     
        $result = $this->socialNetwork->publishPost($text);
     
        // ...
    }
}

$socialNetwork = new SocialNetwork(new facebook ());
$socialNetwork->publish('Publicando en Facebook');


$socialNetwork->setStrategy(new twitter());
$socialNetwork->publish('Publicando en twitter');

En el ejemplo anterior tenemos un interfaz para implementar tantas clases como redes sociales queramamos publicar, en este caso twitter y facebook y luego con la clase SocialNetwork se le pasa cada clase de cada red social para que publique en cada una de ellas.
Os invito a leer sobre Patrones de diseño en php.

Compartir en twitter