Princípio de Segregação de Interfaces 

Anderson Vinicius

ISP

Uma classe não deve depender de métodos que ela não usa. Isso é o que chamamos de Princípio de Segregação de Interfaces, ou ISP.

Pode-se pensar sobre coesão em vários níveis diferentes. Por exemplo, o que seria uma interface coesa? Uma interface coesa é aquela que também só possui uma única responsabilidade.

(ISP) Princípio de Segregação de Interfaces 

“Os clientes não devem ser forçados a implementar interfaces que eles não usam.”

<?php


interface GatewayPayment {
    public function pay();
    public function cancel();
}


interface Donation {
   public function donate();
}


Foi criado uma interface mais específica para doações, pois nem todos os gateways possuem essa funcionalidade.

 

Caso esse método existisse na interface GatewayPayment iria obrigar os clientes a implementarem sem possui esse recurso no gateway.  

<?php

class PagueSeguro implements GatewayPayment, Donation
{

    public function pay() 
    {
        // call payment
    }

    public function cancel() 
    {
        // call cancel payment
    }

    public function donate() 
    {
        // call donate
    }
}


class PagarMe implements GatewayPayment
{

    public function pay() 
    {
        // call payment
    }

    public function cancel() 
    {
        // call cancel payment
    }
}

Referências

Interface Segregation Principle

By Anderson Vinicius

Interface Segregation Principle

Interface Segregation Principle

  • 173