2008-09-12 27 views

Respuesta

29

ISP establece que:

Los clientes no deben ser forzados a depender en métodos que no utilizan.

ISP se refiere a las características importantes - cohesion y coupling.
Idealmente, sus componentes deben ser muy personalizados. Mejora la robustez y la mantenibilidad del código.

Cómo hacer valer los ISP le proporcione siguientes bonificaciones:

  • alta cohesion - mejor comprensibilidad, robustez
  • baja coupling - mejor capacidad de mantenimiento, alta resistencia a los cambios

Si desea obtener más información sobre principios de diseño de software, obtenga una copia del libro Agile Software Development, Principles, Patterns, and Practices.

+2

si eres un adicto a C#: este libro también está disponible adaptado a C#. Se llama Principios Ágiles, Patrones y Prácticas en C#. –

+0

Erik, ya lo leí :-) – aku

5

Simplifica la interfaz que cualquier cliente utilizará y elimina las dependencias que de otro modo podrían desarrollar en partes de la interfaz que no necesitan.

3

Una razón es que tener muchas interfaces con una cantidad mínima de métodos para cada una de ellas hace que sea más fácil implementar cada interfaz e implementarlas correctamente. Una interfaz grande puede ser ingobernable. Además, usar una interfaz enfocada en un escenario hace que el código sea más fácil de mantener porque puede ver qué faceta del objeto se está utilizando (p. Ej., Una interfaz IComparable le permite saber que el objeto solo se usa para comparaciones en el escenario dado).

7

La segregación de la interfaz es la "I" en el principio SÓLIDO, antes de excavar demasiado profundo con la primera, explique qué significa la última.

SOLID se puede considerar como un conjunto de mejores prácticas y recomendaciones hechas por expertos (lo que significa que se han probado antes) con el fin de proporcionar una base confiable en la forma en que diseñamos las aplicaciones. Estas prácticas se esfuerzan por hacer más fácil mantener, extender, adaptar y escalar nuestras aplicaciones.

¿Por qué debería importarme la programación SOLID?

Antes que nada, debes darte cuenta de que no estarás para siempre donde estás. Si utilizamos estándares y arquitecturas bien conocidas, podemos estar seguros de que nuestro código será fácil de mantener por otros desarrolladores que vengan tras de nosotros, y estoy seguro de que no querrá lidiar con la tarea de arreglar un código que no fue creado. No aplicó ninguna metodología conocida, ya que sería muy difícil de entender.

El principio de segregación de la interfaz.

Si sabemos que conocemos los principios SOLIDOS, podemos entrar en más detalles sobre el principio de segregación de interfaz, pero ¿qué dice exactamente la segregación de la interfaz?

“Los clientes no deben ser forzados a implementar métodos innecesarios que no van a utilizar”

Esto significa que a veces se tiende a hacer que las interfaces con una gran cantidad de métodos, que puede ser bueno para una Sin embargo, esto se puede abusar fácilmente, y podemos terminar con clases que implementan métodos vacíos o inútiles que, por supuesto, agregan código adicional y carga a nuestras aplicaciones. Imagínese que usted está declarando una gran cantidad de métodos de interfaz única, si te gusta ayudas visuales una clase que implementa una interfaz, pero que es realmente necesitar un par de métodos de que se vería así:

enter image description here

en el otro lado, si se aplica correctamente la interfaz y la segregación dividir su interfaz en subconjuntos más pequeños me puede asegurarse de implementar aquellas que sólo son necesarios:

enter image description here

Ver! Es mucho mejor! La aplicación de este principio le permitirá tener un acoplamiento bajo que ayuda a un mejor mantenimiento y una gran resistencia a los cambios. Entonces, realmente puede aprovechar el uso de interfaces e implementar los métodos cuando realmente debería. Ahora vamos a revisar un ejemplo menos abstracto, digamos que declaró una interfaz llamada reportable

public interface Reportable { 

     void printPDF(); 
     void printWord(); 
     void printExcel(); 
     void printPPT(); 
     void printHTML(); 


} 

Y usted tiene un cliente que sólo exportar algunos datos en formato Excel, puede implementar la interfaz, sino que sólo tiene para implementar el método excel? La respuesta es no, tendrá que codificar la implementación de todos los métodos, incluso si no va a usarlos, esto puede causar una gran cantidad de código basura, lo que hace que el código sea difícil de mantener.

Remember keep es simple y no te repitas y encontrarás que ya estás usando este principio sin saberlo.

+0

Vale la pena señalar que las interfaces "fregadero de la cocina" no son del todo sin ventajas, en ese código que necesita, p. almacenar una lista de cosas que son 'Reportables' y luego alimentarlas a un consumidor no tendrá que preocuparse por las características que el consumidor necesitará siempre que cualquiera de las instancias reales que se le brinde cumpla con los requisitos del consumidor. No decir que las interfaces enfocadas generalmente no son buenas, pero tener algunas más grandes también puede ser bueno. – supercat

3

Este principio sirve principalmente doble propósito

  • Para que el código sea más legible y manejable.

  • Promueve la responsabilidad individual de las clases (alta cohesión). Por supuesto, ¿por qué una clase debería tener un método que no tenga un impacto en el comportamiento? ¿Por qué no solo eliminarlo? Eso es lo que ISP está a punto

Hay algunas preguntas que un diseñador debe pedir con las preocupaciones de ISP

  • Lo que uno alcanza con ISP
  • Cómo analizo un código ya existente para cualquier Violaciones del ISP

Para continuar con este análisis, debo agregar que este principio no es un 'principio' en el sentido estricto, porque bajo ciertas circunstancias, la aplicación El ISP para el diseño, en lugar de promover la legibilidad, puede hacer que la estructura del objeto sea ilegible y atestada de código innecesario. Puede observar esto en java.awt.paquete de evento

Más contenido en mi blog: http://design-principle-pattern.blogspot.in/2013/12/interface-segregation-principle.html

0

Para evitar esfuerzos de regresión, cuando sólo uno específico para cada cliente o se cambia en el comportamiento específico. Si ha combinado todos sus métodos de comportamiento en una sola interfaz GRANDE, solo piense en cómo terminará probando todas las partes del código donde todo lo que ha referido es esa interfaz, incluso cuando solo ocurrieron pequeños cambios.

Para una explicación más detallada, se refieren a Interface segregation principle article

0

ISP es importante.

idea básica de ISP: no se debe forzar al cliente a depender de métodos que no utiliza.

Este principio parece ser más lógico. Idealmente, el cliente no debería implementar los métodos, que no son utilizados por el cliente.

Consulte a continuación pregunta SE para ejemplo de código:

Interface Segregation Principle- Program to an interface

Ventajas:

  1. Flexibilidad: En ausencia de ISP, usted tiene una interfaz FAT genérico y muchas clases de implementación eso. Supongamos que tiene 1 interfaz y 50 clases. Si hay un cambio en la interfaz, las 50 clases tienen que cambiar su implementación.

    Con ISP, dividirá la interfaz FAT genérica en pequeñas interfaces finas granulares. Si hay un cambio en la interfaz granular pequeña, solo las clases que implementan esa interfaz se verán afectadas.

  2. mantenibilidad y facilidad de uso: Dado que los cambios se limitan a la interfaz de grano fino en lugar de la interfaz genérica HECHO, el mantenimiento del código es más fácil. El código no relacionado ya no forma parte de las clases de implementación.

Cuestiones relacionadas