Este artigo descreve o uso do modo Bridge para implementar funções de comutação e iluminação de luz. Compartilhe -o para sua referência, como segue:
1. Definição do padrão
Modo Bridge, também conhecido como Modo Bridge, em sistemas de software, devido à sua própria lógica, existem duas ou mais dimensões de alterações. Como lidar com essas alterações multidimensionais, o modo Bridge permite que o sistema de software mude facilmente em várias direções sem introduzir complexidade adicional.
As três palavras -chave do modo Bridge são: abstração, implementação e dissociação.
2. Exemplos do modelo
1. Método de análise do modo de ponte
Emprestamos a iluminação leve para ilustrar esse modo.
Sem herança, use o método de combinação de objetos para transformar a forte relação entre interruptores e luzes em relacionamentos fracos.
2 Modelo de classe estática do modo de ponte
3 exemplos de código
3.1 Crie uma interface de luz elétrica
pacote com.demo.bridge.lights;/** * interface de luz * * @author * */interface pública ilight {// ligue o público public void ElectricConnect (); // iluminando a luz pública vazia (); // atual OFF Public void ElectriccLosed ();}3.2 Crie interruptores gerais
pacote com.demo.bridge.switchs; importar com.demo.bridge.lights.ilight;/** * Switch Class de nível superior * * @Author * */classe pública Baseswitch {// Use a combinação para definir o Ilight para atributos privados internos, este é uma luz protegida pela ponte; // O método de construção injeta o tipo de luz externa em Baseswitch público (luz ilight) {this.light = Light; } / *** Método de iluminação* / public final void makelight () {// Ligue o interruptor e ligue a corrente this.light.EletricConnected (); // iluminando this.light.light (); // Desligue o interruptor para desligar a corrente this.light.EltricClosed (); }}3.3 Crie um interruptor remoto
pacote com.demo.bridge.switchs.sub; importar com.demo.bridge.lights.ilight; importar com.demo.bridge.switchs.baseswitch;/** * o interruptor de controle remoto herda a função de extensão Baseswitch @author *//public REMOTECONTECONTROTSOLSOUCT FUNCHITCHCHTCHTCHONSWITCHTSWITCHTSWITCHTSWITCHTSWITCH (@Author * */public RemoTecOntConswitch Função {super (luz); } / *** Use a chave de controle remoto para controlar a luz LIGADA** @param operatorColor* cor clara* / public Final Void MakeMotelight (int Operacolor) {// Ligue o interruptor para ativar a corrente this.light.EletricConnected (); // iluminar this.light.light (); String color = ""; switch (opercolor) {case 1: color = "cor quente"; quebrar; Caso 2: color = "azul"; quebrar; Caso 3: color = "vermelho"; quebrar; padrão: color = "branco"; quebrar; } System.out.println ("... agora é" + color + "!"); // Fechar o interruptor para desligar a corrente this.light.EltricCloised (); }}3.4 Implementação de lâmpada incandescente
pacote com.demo.bridge.lights.impl; importar com.demo.bridge.lights.ilight;/** * implementação incandescente da lâmpada * * @author * */public class IncandescedLight implementa ilight {// atualização do public void Electricclosed () {System.out.println ("A lâmpada incandida é lixada } // Ligue a atual public void ElectricConnected () {System.out.println ("A lâmpada incandescente está ligada ..."); } // iluminação pública void Light () {System.out.println ("Iluminação incandescente!"); }}3.5 Implementação da lâmpada de cristal
pacote com.demo.bridge.lights.impl; importar com.demo.bridge.lights.ilight;/** * implementações de cristal * @author * */public class Crystalight implementa ilight {// atualizando public void ElectricCled () {System.out.println ("a luz de cristal foi desativada ..."); } // Ligue o público public void atual () {System.out.println ("O CrystalLight foi ligado ..."); } // iluminação pública void Light () {System.out.println ("iluminação da lâmpada de cristal!"); }}3.6 Lâmpada incandescente de controle geral da chave, lâmpada de cristal de controle de interruptor remoto
pacote com.demo; importar com.demo.bridge.lights.ilight; importar com.demo.bridge.lights.impl.crystalight; importar com.demo.bridge.lights.impl.incandescentLight; importridge.demo.bridge.switch.baseswems; @author * */public class clientforbridge {/** * @param args */public static void main (string [] args) {// incandescentlight instância ilight incandescedlight = new incandescentLight (); // instância de lâmpada de cristal ilight Crystalight = new CrystalLight (); // general switch System.out.println ("- general switch--"); Baseswitch switch1 = new Baseswitch (IncandescentLight); switch1.makelight (); System.out.println ("/n-- interruptor de controle remoto--"); // interruptor de controle remoto remoteControlSwitch = new RemoteControlSwitch (Crystallight); remoteControlswitch.makeremotelight (1); }}Resultados em execução:
- Switch geral-
A lâmpada incandescente foi ligada ...
Iluminação incandescente da lâmpada!
A lâmpada incandescente foi desligada ...
- Switch de controle remoto-
A lâmpada de cristal foi ligada ...
Iluminação de lâmpada de cristal!
... está quente agora!
A lâmpada de cristal foi desligada ...
3.7 Lâmpada de cristal de controle geral de comutação, controle de controle remoto lâmpada incandescente
pacote com.demo; importar com.demo.bridge.lights.ilight; importar com.demo.bridge.lights.impl.crystalight; importar com.demo.bridge.lights.impl.incandescentLight; importridge.demo.bridge.switch.baseswems; @author * */public class clientforbridge {/** * @param args */public static void main (string [] args) {// incandescentlight Exemplo ilight incandescentLight = new IncandescentLight (); // Lâmpada de cristal exemplo ilight Crystalight = new CrystalLight (); // general switch System.out.println ("- general switch--"); Baseswitch switch1 = new Baseswitch (Crystalight); switch1.makelight (); System.out.println ("/n-- interruptor de controle remoto--"); // interruptor de controle remoto remoteControlSwitch = new RemoteControlSwitch (IncandescentLight); remoteControlswitch.makeremotelight (1); }}Resultados de execução
- Switch geral-
A lâmpada de cristal foi ligada ...
Iluminação de lâmpada de cristal!
A lâmpada de cristal foi desligada ...
- Switch de controle remoto-
A lâmpada incandescente foi ligada ...
Iluminação incandescente da lâmpada!
... está quente agora!
A lâmpada incandescente foi desligada ...
3. Princípios de design
Eu tente usar a agregação de objetos de associações fracas e evite usar fortes associações de herança.
2 Desaparelamento de abstração e implementação.
4. Use ocasiões
Não quero uma relação de ligação fixa entre a classe abstrata e a parte de implementação
As partes de abstração e implementação de 2 classes devem ser expandidas através do método de silenciamento.
3 A modificação de uma parte de implementação abstrata não afeta o cliente, ou seja, o código do cliente não precisa ser recompilado.
5. Diagrama de classe estática no modo de ponte
Para obter mais informações sobre os algoritmos Java, os leitores interessados neste site podem visualizar os tópicos: "Estrutura de dados Java e tutorial de algoritmo", "Resumo das dicas de nó da operação Java Dom", "Resumo de dicas de operação de Java e Operação de Java" e "Resumo de Java cache" Tips "TIPS"
Espero que este artigo seja útil para a programação Java de todos.