¿Es la interfaz un patrón de diseño o una característica orientada a objetos?

Las interfaces están en lenguajes orientados a objetos para exponer algunos comportamientos al mundo exterior al esconderse detrás de la implementación real. Las ventajas de usar interfaces sobre clases concretas es que puede cambiar la implementación real detrás de la interfaz cuando sea necesario, porque para el mundo exterior es la interfaz que es conocido, por lo que la implementación detrás de escena se puede cambiar fácilmente.

Para dar un ejemplo del mundo real, digamos que traemos a casa un televisor. Para nosotros es una pantalla en la que podemos ver varios canales, de modo que la pantalla del televisor es una interfaz para nosotros. Si mañana la compañía de televisión cambia algunos circuitos internos o tecnología, se irá Inadvertido para nosotros, porque lo que se nos ha expuesto es la pantalla de televisión (la Interfaz) y no la implementación concreta real y no nos importará mientras podamos ver la pantalla con una resolución clara o más clara.

Espero que ayude 🙂

Las interfaces (como en Java y C #) son una característica central del lenguaje.

La mayoría de los patrones de diseño en los lenguajes orientados a objetos / de tipo estático los usan como bloques de construcción, ya que permiten al programador construir sistemas de objetos sin usar implementaciones específicas.

La interfaz (Java) no es un patrón de diseño de software, sino un tipo abstracto que se utiliza para especificar una interfaz (en el sentido genérico del término) que las clases deben implementar.

Entonces, es una abstracción de Orientado a Objetos.

Prefiero llamarlo una característica ya que puede usar esta ‘característica’ para implementar patrones de diseño, como el patrón ‘decorador’ o el patrón ‘adaptador’.

Si esta característica no hubiera estado disponible en ningún lenguaje de programación, sería difícil implementar los patrones indicados anteriormente, si no imposible.

More Interesting

¿Cuánto más rápido es CoreFoundation que Cocoa / Cocoa Touch?

¿Cuál es la herramienta más exitosa para la productividad en las empresas?

Como Team Manager, ¿hay algún software que me permita saber cuánta gente trabaja cada media hora de la semana?

Un amigo argumenta que los campos de entrenamiento, los MOOCS y los libros se consideran 'bombas y vertederos' en lugar de ofrecer una educación formal en CS. Si paso por MOOCS intensivos y campamentos de entrenamiento, ¿realmente me estoy engañando?

Como desarrollador de software, ¿qué tipo de recursos prefiere, blogs o videos y por qué?

¿Las pruebas de software son más fáciles en comparación con la codificación / desarrollo en el campo del software?

¿Cuáles son los buenos libros sobre las mejores prácticas del diseño de lenguajes específicos de dominio (DSL)?

¿Es más difícil obtener una licenciatura en Ingeniería de Software o Matemática Actuarial?

¿Cuáles son algunas características importantes de un buen compañero de equipo?

¿Cuánto tiempo llevará un proceso que tardó 10 segundos en ejecutarse si las llamadas al sistema pueden acelerarse por un factor de dos?

¿Qué pila de software usa Siri?

¿Cuál hubiera sido el estado del desarrollo de software empresarial si el movimiento ágil no hubiera surgido?

¿Existe un servicio web que proporcione tasas de conversión de moneda por hora / día precisas?

¿Por qué las materias STEM, particularmente las matemáticas, están asociadas con la escritura de códigos de computadora?

¿Por qué es tan popular Google Guice para la inyección de dependencia durante la primavera?