Este artículo describe el uso del modo puente para implementar funciones de iluminación de interruptores e luz. Compártelo para su referencia, como sigue:
1. Definición de patrones
Modo de puente, también conocido como Mode Bridge, en sistemas de software, debido a su propia lógica, hay dos o más dimensiones de cambios. Cómo lidiar con tales cambios multidimensionales, el modo Bridge permite que el sistema de software cambie fácilmente en múltiples direcciones sin introducir complejidad adicional.
Las tres palabras clave del modo puente son: abstracción, implementación y desacoplamiento.
2. Ejemplos del modelo
1. Método de análisis de modo puente
Tomamos prestada iluminación de luz para ilustrar este modo.
Sin herencia, use el método de combinación de objetos para convertir la fuerte relación entre los interruptores y las luces en relaciones débiles.
2 Modelo de clase estática en modo puente
3 ejemplos de código
3.1 Crear una interfaz de luz eléctrica
paquete com.demo.bridge.lights;/** * Interfaz de luz * * @author * */public interfaz ilight {// activar el public void actual electricConnected (); // iluminación public void light (); // Current Off Public void ElectricClosed ();}3.2 Crear interruptores generales
paquete com.demo.bridge.switchs; import com.demo.bridge.lights.ilight;/** * Cambiar clase de nivel superior * * @author * */public class Baseswitch {// Use combinación para establecer ilight a atributos privados internos Esto es una luz ilight protegida por el puente; // La construcción del método inyecta el tipo de luz externa en el revestimiento de bases públicas (ilight Light) {this.light = light; } / *** Método de iluminación* / public Final void makelight () {// enciende el interruptor y enciende la corriente this.light.electricConnected (); // Iluminar this.light.light (); // Apague el interruptor para apagar la corriente este.light.ElectricClosed (); }}3.3 Crear un interruptor remoto
paquete com.demo.bridge.switchs.sub; import com.demo.bridge.lights.ilight; import com.demo.bridge.switchs.baseswitch;/** * El conmutador de control remoto inquisita el bashasswitch extension function * * @author * */public class remotontrolswitch Extends BasesSwitch {// construct method public remoTecontRoltRoltolt (ortecontrolt). super (luz); } / *** Use el interruptor de control remoto para controlar la luz encendida** @param operatorColor* color de luz* / public final void makeremotelight (int operacolor) {// enciende el interruptor para activar este.light.electricConnected (); // Light this.light.light (); Color de cadena = ""; Switch (OperColor) {Case 1: Color = "Color caliente"; romper; Caso 2: color = "azul"; romper; Caso 3: color = "rojo"; romper; predeterminado: color = "blanco"; romper; } System.out.println ("... ahora es" + color + "!"); // Cerrar interruptor para apagar la corriente this.light.ElectricClosed (); }}3.4 Implementación de la lámpara incandescente
paquete com.demo.bridge.lights.impl; import com.demo.bridge.lights.ilight;/** * Implementación de la lámpara incandescente * * @author * */public class IncandaScentlight implementa Ilight {// Actual OFF public void ElectricClosed () {System.out.Println ("Incandescent Lamp se apaga ..."); } // activar public public void ElectricConnected () {System.out.println ("La lámpara incandescente está activada ..."); } // iluminación public void light () {System.out.println ("¡Iluminación incandescente!"); }}3.5 Implementación de la lámpara de cristal
paquete com.demo.bridge.lights.impl; import com.demo.bridge.lights.ilight;/** * Crystallight implementaciones * @author * */public class Crystallight implementa ilight {// Actual Off Public void ElectricClosed () {System.Println ("Crystallight fue desactivado ...");; } // activar public public void ElectricConnected () {System.out.println ("Crystallight fue activado ..."); } // iluminación public void light () {System.out.println ("¡Iluminación de la lámpara de cristal!"); }}3.6 Lámpara incandescente de control de interruptor general, lámpara de cristal de control de interruptor remoto
paquete com.demo; import com.demo.bridge.lights.ilight; import com.demo.bridge.lights.impl.crystallight; import com.demo.bridge.lights.impl.incandescentlight; import com.demo.bridge.switchs.baseswitch; import.demo.bridge.switchs.sub.sub.remotecontrolse @author * */public class ClientForBorBorBorBridge {/** * @param args */public static void main (string [] args) {// incandescentlight instancia ilight incandescentlight = new incandescentlight (); // instancia de la lámpara de cristal ilight crystallight = new Crystallight (); // Switch General System.out.println ("- Switch general--"); Baseswitch Switch1 = nuevo Baseswitch (IncandaScentlight); switch1.makElight (); System.out.println ("/n-- Switch de control remoto--"); // interruptor de control remoto remotecontrolswitch = new RemotecontrolSwitch (Crystallight); remotecontrolswitch.makeremotelight (1); }}Resultados de ejecución:
- Switch General-
La lámpara incandescente estaba encendida ...
¡Iluminación de lámpara incandescente!
La lámpara incandescente se apagó ...
- interruptor de control remoto-
La lámpara de cristal estaba encendida ...
¡Iluminación de la lámpara de cristal!
... ¡Hace calor ahora!
La lámpara de cristal se apagó ...
3.7 Lámpara de cristal de control de interruptor general, lámpara incandescente de control de control de control remoto
paquete com.demo; import com.demo.bridge.lights.ilight; import com.demo.bridge.lights.impl.crystallight; import com.demo.bridge.lights.impl.incandescentlight; import com.demo.bridge.switchs.baseswitch; import.demo.bridge.switchs.sub.sub.remotecontrolse @author * */public class ClientForBorBorBridge {/** * @param args */public static void main (string [] args) {// incandescentlight ejemplo ilight incandescentlight = new incandescentlight (); // Ejemplo de lámpara de cristal Ilight Crystallight = new Crystallight (); // Switch General System.out.println ("- Switch general--"); Baseswitch Switch1 = nuevo Baseswitch (Crystallight); switch1.makElight (); System.out.println ("/n-- Switch de control remoto--"); // interruptor de control remoto RemotecontrolSwitch = new RemotecontrolSwitch (incandescentlight); remotecontrolswitch.makeremotelight (1); }}Resultados de ejecución
- Switch General-
La lámpara de cristal estaba encendida ...
¡Iluminación de la lámpara de cristal!
La lámpara de cristal se apagó ...
- interruptor de control remoto-
La lámpara incandescente estaba encendida ...
¡Iluminación de lámpara incandescente!
... ¡Hace calor ahora!
La lámpara incandescente se apagó ...
3. Principios de diseño
1 Trate de usar la agregación de objetos de asociaciones débiles y evite usar fuertes asociaciones de herencia.
2 Desacoplamiento de abstracción e implementación.
4. Use ocasiones
1 No quiero una relación vinculante fija entre la clase abstracta y la parte de implementación
Las partes de abstracción e implementación de 2 clases deben ampliarse a través del método de silenciamiento.
3 La modificación de una parte de implementación abstracta no afecta al cliente, es decir, el código del cliente no tiene que ser recompilado.
5. Diagrama de clase estática en modo puente
Para obtener más información sobre los algoritmos de Java, los lectores interesados en este sitio pueden ver los temas: "Estructura de datos Java y tutorial de algoritmo", "Resumen de las puntas de nodo de operación de Java DOM", "Resumen de Java Archivo y TIPS de operación de directorio" y "Summary of Java Cache Operation Tips" TIPS ""
Espero que este artículo sea útil para la programación Java de todos.