1. Princípio de Segregação de Interface (ISP: Princípio de Segregação de Interface)
Definição: É melhor usar múltiplas interfaces especializadas do que usar uma única interface geral. Também pode ser dito: construa uma interface única, não construa uma interface inchada.
Duas definições de ISP:
◇ “Os clientes não devem ser forçados a depender de interfaces que não utilizam”
Um cliente não deve confiar em interfaces de que não necessita.
◇ “A dependência de uma classe para outra deve depender da menor interface possível”
A dependência de uma classe em outra classe deve ser baseada na menor interface. (do cliente)
Interfaces e funções: Compreender uma interface como uma coleção de características de todos os métodos fornecidos por uma classe. Desta forma, a divisão de interfaces provoca a divisão de tipos. Portanto, uma interface deve representar apenas uma função, em vez de servir múltiplas funções.
Contaminação de Interface: A chamada contaminação de interface está adicionando responsabilidades desnecessárias à interface. A poluição da interface trará problemas de manutenção e reutilização. O problema mais comum é que, para reutilizar a interface poluída, somos forçados a implementar e manter métodos desnecessários. Portanto, devemos separar o programa cliente, e separar o programa cliente significa separar a interface.
Como implementar interfaces separadas:
Geralmente existem duas maneiras de separar interfaces:
1) Use delegação para interfaces separadas. (Separação por Delegação)
Basta delegar a solicitação à classe de implementação de outras interfaces para cumprir as responsabilidades exigidas, que é o padrão do adaptador (Adapter).
2) Use herança múltipla para separar interfaces. (Separação por herança múltipla.)
Este método implementa várias interfaces para cumprir as responsabilidades necessárias.
Ambos os métodos têm suas próprias vantagens e desvantagens. Normalmente devemos considerar a última opção primeiro e escolher a primeira opção se a conversão de tipo estiver envolvida.
Este artigo vem do blog CSDN. Indique a fonte ao reimprimir: http://blog.csdn.net/scelong/archive/2009/12/18/5031030.aspx.
-