1. Principio de segregación de interfaces (ISP: principio de segregación de interfaces)
Definición: Es mejor utilizar múltiples interfaces especializadas que utilizar una única interfaz general. También se puede decir: cree una interfaz única, no una interfaz inflada.
Dos definiciones de ISP:
◇ “No se debe obligar a los clientes a depender de interfaces que no utilizan”
Un cliente no debe depender de interfaces que no necesita.
◇ “La dependencia de una clase con respecto a otra debería depender de la interfaz más pequeña posible”
La dependencia de una clase de otra clase debe basarse en la interfaz más pequeña. (del cliente)
Interfaces y roles: Entendiendo una interfaz como una colección de características de todos los métodos proporcionados por una clase. De esta forma, la división de interfaces conlleva la división de tipos. Por lo tanto, una interfaz debe representar solo una función, en lugar de cumplir múltiples funciones.
Contaminación de la interfaz: La llamada contaminación de la interfaz agrega responsabilidades innecesarias a la interfaz. La contaminación de la interfaz traerá problemas de mantenimiento y reutilización. El problema más común es que para reutilizar la interfaz contaminada, nos vemos obligados a implementar y mantener métodos innecesarios. Por lo tanto, debemos separar el programa cliente, y separar el programa cliente significa separar la interfaz.
Cómo implementar interfaces separadas:
Generalmente hay dos formas de separar interfaces:
1) Utilice la delegación para separar interfaces. (Separación por Delegación)
Simplemente delegue la solicitud a la clase de implementación de otras interfaces para completar las responsabilidades requeridas, que es el patrón de adaptador (Adaptador).
2) Utilice herencia múltiple para separar interfaces. (Separación por herencia múltiple).
Este método implementa múltiples interfaces para completar las responsabilidades requeridas.
Ambos métodos tienen sus propias ventajas y desventajas. Por lo general, debemos considerar primero la última opción y elegir la primera si se trata de conversión de tipos.
Este artículo proviene del blog de CSDN. Indique la fuente al reimprimir: http://blog.csdn.net/scelong/archive/2009/12/18/5031030.aspx.
-