Programación de una interface, no de una implementación. La herencia de clases es básicamente solo un mecanismo para extender la funcionalidad de una aplicación reusando la funcionalidad de las clases padres
La herencia de clases es básicamente solo un mecanismo para extender la funcionalidad de una aplicación reusando la funcionalidad de las clases hijas
. Programación de una interface, no de una implementación. La herencia de clases es básicamente solo un mecanismo para extender la funcionalidad de una aplicación reusando la funcionalidad de las clases padres. Esto te permite definir una nueva clase de objetos rápidamente en términos de un objeto más antiguo Esto te permite definir una nueva clase de objetos rápidamente. Programación de una interface, no de una implementación. La herencia de clases es básicamente solo un mecanismo para extender la funcionalidad de una aplicación reusando la funcionalidad de las clases padres. Esto te permite definir una nueva clase de objetos rápidamente en términos de un objeto más antiguo. Esto te permite obtener nuevas implementaciones casi gratis, heredando la mayoría de lo que tú necesitas de clases que ya existen
Esto te permite obtener nuevas implementaciones de forma muy difícil, heredando la mayoría de lo que tú necesitas de clases que ya existen
. Programación de una interface, no de una implementación. Sin embargo, reusar la implementación es solo la mitad de la historia Reusar la implementación es todo lo que se hace. Programación de una interface, no de una implementación. Sin embargo, reusar la implementación es solo la mitad de la historia, ya que la habilidad de la herencia para definir familias de objetos con interfaces idénticas (usualmente heredando de una clase abstracta) es también importante. Por qué es importante? Porque es la base del polimorfismo Porque es la base de la encapsulación. Programación de una interface, no de una implementación. Cuando la herencia se usa cuidadosamente y apropiadamente todas las clases derivadas de una clase abstracta compartirán su interfaz
Cuando la herencia se usa cuidadosamente y apropiadamente todas las clases derivadas de una clase abstracta compartirán su implementación
. Programación de una interface, no de una implementación. Cuando la herencia se usa cuidadosamente y apropiadamente todas las clases derivadas de una clase abstracta compartirán su interfaz. Esto implica que una subclase simplemente añade o sobrescribe operaciones... y no esconde las operaciones de la clase padre y esconde las operaciones de la clase padre. Programación de una interface, no de una implementación. Cuando la herencia se usa cuidadosamente y apropiadamente todas las clases derivadas de una clase abstracta compartirán su interfaz. Esto implica que una subclase simplemente añade o sobrescribe operaciones y no esconde las operaciones de la clase padre. Todas las subclases pueden entonces responder a las peticiones que coincidan con la interface de su clase abstracta, convirtiéndose esas subclases en ... de la clase abstracta subtipos supertipos. Hay dos beneficios de manipular objetos simplemente en términos de la interface definida por una clase abstracta: Los clientes no tienen que estar pendientes de los tipos específicos de objetos que ellos usan, ya que todos los objetos tienen la interfaz que los clientes esperan
Los clientes no tienen que estar pendientes de las clases que implementan esos objetos. Los clientes solo tienen que conocer la clase abstracta (o clases abstractas) que definen la interfaz
La encapsulación se mejora
. Hay dos beneficios de manipular objetos simplemente en términos de la interface definida por una clase abstracta:
Los clientes no tienen que estar pendientes de los tipos específicos de objetos que ellos usan, ya que todos los objetos tienen la interfaz que los clientes esperan
Los clientes no tienen que estar pendientes de las clases que implementan esos objetos. Los clientes solo tienen que conocer la clase abstracta (o clases abstractas) que definen la interfaz
... que nos lleva al siguiente principio del diseño orientado a objetos reusable:
Programación de una interface, no de una implementación
Todo esto reduce muchísimo las dependencias de implementación entre subsistemas Todo esto aumenta muchísimo las dependencias de implementación entre subsistemas. Programación de una interface, no de una implementación. No se declaran las variables para ser instancias de una clase concreta particular. En vez de eso, las variables se direccionan solo a una interfaz definida por una clase abstracta. Este mecanismo es super común en los patrones de diseño Este mecanismo casi no se usa en los patrones de diseño. Tú tienes que instanciar clases concretas (es decir, especificar una implementación particular) en algún lugar de tu sistema, por supuesto. Los patrones creacionales te permiten hacer esto: abstract factory, builder, factory method, prototype y singleton abstract factory, bridge, factory method, prototype y singleton. Tú tienes que instanciar clases concretas (es decir, especificar una implementación particular) en algún lugar de tu sistema, por supuesto. Los patrones creacionales te permiten hacer esto: abstract factory, builder, factory method, prototype y singleton. Estos patrones abstraen el proceso de la creación de objetos Estos patrones usan JPA en el proceso de la creación de objetos. Tú tienes que instanciar clases concretas (es decir, especificar una implementación particular) en algún lugar de tu sistema, por supuesto. Los patrones creacionales te permiten hacer esto: abstract factory, builder, factory method, prototype y singleton. Estos patrones abstraen el proceso de la creación de objetos, lo que hacen es darte diferentes vías para asociar una interface con una implementación ... en la instanciación. de forma transparente de forma no transparente. Tú tienes que instanciar clases concretas (es decir, especificar una implementación particular) en algún lugar de tu sistema, por supuesto. Los patrones creacionales te permiten hacer esto: abstract factory, builder, factory method, prototype y singleton. Estos patrones abstraen el proceso de la creación de objetos, lo que hacen es darte diferentes vías para asociar una interface con una implementación de forma transparente en la instanciación. Los patrones creacionales aseguran que tu sistema es escrito en términos de interfaces, no de implementaciones
Los patrones creacionales aseguran que tu sistema es escrito en términos de implementaciones, no de interfaces
.
|