Saltar al contenido principal

Principios SOLID PHP Edition. Hoy, el principio de segregación de Interfaces

Jose CerrejonAlrededor de 2 minDeveloper

Principios SOLID PHP Edition. Hoy: el principio de segregación de Interfaces

águilas y pingüinos volando
Principio de Segregación de Interfaces. Generado con AI.

Estamos casi acabando la serie de artículos sobre los principios SOLID. Aquí tiene una breve explicación de cada principio para repasarlos:


Hoy vamos a centrarnos en el Principio de segregación de Interfaces. Es muy fácil de entender, lo prometo. ❤️

Este principio establece que una clase nunca debe ser forzada a implementar una interfaz que no use. Si implementa una interfaz en una clase, pero solo utiliza algunos de sus métodos, indica que estamos violando este principio. Un ejemplo:

// Bad
interface Bird {
    public function fly();
    public function swim();
}

class Eagle implements Bird {
    public function fly() {
        return "I can fly";
    }
    public function swim() { <- Obligado a implementar un método que no necesita
        return "I can't swim";
    }
}

class Penguin implements Bird {
    public function fly() { <- Obligado a implementar un método que no necesita
        return "I can't fly";
    }
    public function swim() {
        return "I can swim";
    }
}

En este ejemplo, la interfaz Bird tiene dos métodos: fly y swim.

Las clases Eagle y Penguin implementa ambos métodos, pero la clase Penguin solo debe implementar el método swim (¿Alguna vez has visto un pingüino volando?), y Eagle solo debería implementar el método fly. Esto viola el Principio de Segregación de la Interfaz (Interface Segregation Principle).

Un ejemplo con la forma correcta de implementarla sería:

// Good
interface Bird {
    public function fly();
}

interface Swimmer {
    public function swim();
}

class Eagle implements Bird {
    public function fly() {
        return "I can fly";
    }
}

class Penguin implements Swimmer {
    public function swim() {
        return "I can swim";
    }
}

Ahora tenemos dos interfaces: Bird y Swimmer. La clase Eagle implementa la interfaz Bird y la clase Penguin implementa la interfaz Swimmer . De esta manera, estamos siguiendo el principio que estamos discutiendo. Fácil, ¿Verdad?. 😄

Espero que te haya gustado el artículo de hoy. Si tiene alguna pregunta o sugerencia, mientras añado comentarios al blog, puedes enviarme un email.

¡Nos vemos en el próximo artículo!.