Principio de inversión de dependencia en JAVA
Uno de los principios más básicos de la ley estadounidense es "todos son iguales". No nos importa qué tipo de lucha o derramamiento de sangre se logró. Solo lo entendemos como un método JAVA, que se define de la siguiente manera:
público final booleano todos son iguales (persona 1, persona 2) {
devolver verdadero;
}
Aunque las leyes de cada estado pueden ser diferentes, como la Ley Básica de los Estados Unidos, Nueva York puede denominarse Ley Básica de Nueva York. Deberían tener esa relación: la Ley Básica de Nueva York hereda la Ley Básica de los Estados Unidos. Estados, pero no permite reescribir este método.
Cuando se trata de hacer cumplir la ley en Nueva York, se utiliza lo siguiente:
Ley Básica de los Estados Unidos = nueva Ley Básica de Nueva York
Llamar al método "todos son iguales" en cualquier lugar devolverá "verdadero", lo que significa que el principio de igualdad de todos no se puede cambiar en ninguna parte. Esta es una decisión macro que determina lo micro, y no cambiará entre hombres y mujeres debido a New. York. Desigualdad de las mujeres.
Por ejemplo, un determinado país también tiene una ley básica y un método de igualdad para todos. La definición debería ser la siguiente:
público booleano todos son iguales (persona 1, persona 2) {
devolver verdadero;
}
Por ejemplo, un determinado lugar en un determinado país también tiene una ley básica. La ley básica de un determinado lugar también se hereda de la ley básica de un determinado país. Sin embargo, debido a que el método de "todos son iguales" no es definitivo. puede reescribirse cuando se implementa en un lugar determinado, puede ser:
Ley Básica de un determinado país = nueva Ley Básica de un determinado lugar
o
Ley Básica de un lugar determinado = nueva Ley Básica de un lugar determinado
Quizás cuando la Ley Básica de un determinado lugar heredó la Ley Básica de un determinado país, el método "todos son iguales" se reescribió y se cambió a:
público booleano todos son iguales (persona 1, persona 2) {
if(persona 1==persona de cierto lugar&& persona 2==persona de cierto lugar){
if(la persona 1 y la persona 2 tienen los mismos atributos){
if(la persona 1 y la persona 2 son iguales excepto que no son la misma persona){
si(nadie más sucede){
devolver verdadero;
}demás{
devolver falso;
}
}demás{
devolver falso;
}
}demás{
devolver falso;
}
}demás{
devolver falso;
}
}
Hablemos del principio de inversión de dependencia, según "JAVA y patrones":
El nivel abstracto contiene la lógica de negocios del sistema de aplicación y las decisiones estratégicas de nivel macro que son importantes para todo el sistema y son un reflejo de la inevitabilidad, mientras que el nivel concreto contiene algunos algoritmos y lógica menores relacionados con la implementación, así como tácticas; La decisión implica una probabilidad considerable. Los niveles específicos de código cambiarán con frecuencia y no se podrán evitar errores. El nivel de abstracción depende del nivel de concreción. Los cambios de algoritmo que utilizan detalles en el nivel específico afectan inmediatamente la lógica empresarial macroscópica en el nivel de abstracción, lo que hace que lo microscópico determine lo macroscópico, las tácticas determinen la estrategia y la oportunidad determine la necesidad. Esto es ridículo.
Después de leer esto, comprenderá por qué debería usarlo con más frecuencia al escribir código en el futuro:
lógica abstracta = nueva lógica concreta
Utilice lo menos posible:
lógica específica = nueva lógica específica
Esta es la programación orientada a interfaz que se recomienda actualmente. Aquí hay otro ejemplo práctico de programación orientada a interfaz:
Normalmente deberías usar List con más frecuencia. List en sí es una interfaz heredada de Collection. Puedes usarla así:
Lista lista=nuevo Vector();
La Lista declarada de esta manera es en realidad un tipo Vector, porque Vector es su subclase. Según el principio de sustitución de Liskov, se pueden aceptar subclases dondequiera que se pueda aceptar la clase principal. En este momento, la Lista está sincronizada y, por supuesto, se verá afectada por cierto rendimiento. Si cambia a un entorno que no requiere sincronización en el futuro, solo necesita cambiar el código anterior a algo como esto:
Lista lista=nueva ArrayList();
No es necesario modificar ningún otro código. El tipo real de Lista en este momento es ArrayList.
Desde este punto, podemos ver por qué los diseñadores aprecian la programación orientada a interfaces, porque después de proporcionar la interfaz, los implementadores implementan clases específicas basadas en la interfaz, y no hay necesidad de preocuparse de que los implementadores destruyan la integridad del original. programa, y los diseñadores nunca solo se preocuparán por los métodos en la interfaz, no se preocuparán por los métodos auxiliares en la clase concreta. Pero esto tiene un costo adicional, como agregar clases JAVA. Si las clases abstractas pueden generar menos eficiencia, es una mejor opción usar acoplamientos concretos, como clases de herramientas.