Cet article décrit l'utilisation du mode de pont pour implémenter les fonctions d'éclairage de commutation et d'éclairage. Partagez-le pour votre référence, comme suit:
1. Définition du modèle
Le mode Bridge, également connu sous le nom de Mode Bridge, dans les systèmes logiciels, en raison de sa propre logique, il y a deux dimensions ou plus de modifications. Comment gérer de telles modifications multidimensionnelles, le mode Bridge permet au système logiciel de changer facilement dans plusieurs directions sans introduire une complexité supplémentaire.
Les trois mots clés du mode de pont sont: l'abstraction, la mise en œuvre et le découplage.
2. Exemples du modèle
1. Méthode d'analyse en mode de pontage
Nous empruntons l'éclairage léger pour illustrer ce mode.
Sans héritage, utilisez la méthode de combinaison d'objets pour transformer la forte relation entre les commutateurs et les lumières en relations faibles.
Modèle de classe statique en mode pont
3 exemples de code
3.1 Créer une interface de lumière électrique
package com.demo.bridge.lights; / ** * Interface lumineuse * * @author * * / interface publique iLight {// Activez le public void ElectricConnected (); // Éclairage public Void Light (); // Current Off public void electricClosed ();}3.2 Créer des commutateurs généraux
Package com.demo.bridge.switchs; import com.demo.bridge.light.ilight; / ** * Switch Class de niveau supérieur * * @author * * / classe publique Baseswitch {// Utiliser la combinaison pour définir iLight sur les attributs privés internes Il s'agit d'un léger de pont protégé par pont; // La construction de la méthode injecte le type de lumière externe dans le commutateur de bases public (ilight Light) {this.light = Light; } / ** * Méthode d'éclairage * / public final void makelight () {// Activez l'interrupteur et allumez le courant this.light.electricconned (); // allumant this.light.light (); // éteignez l'interrupteur pour éteindre le courant this.light.electricClosed (); }}3.3 Créer un commutateur distant
Package com.demo.bridge.switchs.sub; import com.demo.bridge.lights.ilight; import com.demo.bridge.switchs.baseswitch; / ** * Le commutateur de télécommande hérite de la fonction d'extension de base de bases * * @Author * * / public classing Super (léger); } / ** * Utilisez le commutateur de télécommande pour contrôler la lumière sur * * @param operatorColor * Light Color * / public void MakerMoteLight (int operacolor) {// Activez le commutateur pour activer le courant this.light.electricconnected (); // allumez this.light.light (); String color = ""; Switch (OperColor) {Case 1: Color = "Warm Color"; casser; Cas 2: Color = "Blue"; casser; Cas 3: Color = "Red"; casser; par défaut: color = "blanc"; casser; } System.out.println ("... maintenant est" + Color + "!"); // Fermez l'interrupteur pour désactiver le courant this.light.electricClosed (); }}3.4 Implémentation de lampe à incandescence
Package com.demo.bridge.light.implt; import com.demo.bridge.light.ilight; / ** * Implémentation de lampe à incandescente * * @Author * * / public class InCandescentlight implémente iLight {// actuel off Public void electricClosed () {System.out.println ("Lampe d'inccassivement est désactivée ..."); } // Activer le courant public void ElectricConnected () {System.out.println ("Lampe à incandescence est activée ..."); } // Lighting public void Light () {System.out.println ("Éclairage incandescent!"); }}3.5 Implémentation de la lampe cristalline
package com.demo.bridge.light.implt; import com.demo.bridge.light.ilight; / ** * CrystalLight implémentations * @Author * * / public class CrystalLight implémente iLight {// Current Off public void electricclosed () {System.out.println ("CurstalLight a été désactivé ..."); } // Activer le courant public void ElectricConnected () {System.out.println ("Crystallight a été activé ..."); } // éclairage public void Light () {System.out.println ("Crystal Lamp Lighting!"); }}3.6 Contrôle général Contrôle lampe à incandescence, lampe cristalline de commande de commutation à distance
Package Com.demo; Import com.demo.bridge.light.ilight; import com.demo.bridge.lights.imppl.crystallight; import com.demo.bridge.lights.impl.incandescentlight; import com.demo.bridge.switchs.baseswitch; import com.demo.bridge.switchs.sub.remoteControlent @author * * / public class ClientForBridge {/ ** * @param args * / public static void main (String [] args) {// IncandeCentlight instance ilight incandescentlight = new incandescentlight (); // instance de lampe cristalline ilight cristallight = new Crystallight (); // General Switch System.out.println ("- General Switch--"); Commutateur de commutation de bases1 = nouveau commutateur de bases (incandescentlight); switch1.makelight (); System.out.println ("/ n-- Remote Control Switch--"); // Commutateur de télécommande RemoteControlSwitch = new RemoteControlSwitch (Crystallight); RemoteControlSwitch.makerMoteLlight (1); }}Résultats en cours:
- commutateur général-
La lampe à incandescence a été allumée ...
Éclairage à la lampe à incandescence!
La lampe à incandescence a été éteinte ...
- Commutateur de télécommande-
La lampe en cristal a été allumée ...
Éclairage de lampe cristalline!
... il fait chaud maintenant!
La lampe en cristal a été éteinte ...
3.7 Contrôle général Contrôle lampe en cristal, télécommande Commutateur Contrôle lampe à incandescence
Package Com.demo; Import com.demo.bridge.light.ilight; import com.demo.bridge.lights.imppl.crystallight; import com.demo.bridge.lights.impl.incandescentlight; import com.demo.bridge.switchs.baseswitch; import com.demo.bridge.switchs.sub.remoteControlent @author * * / public class ClientForBridge {/ ** * @param args * / public static void main (String [] args) {// incandescentlight example iLight incandescentlight = new incandescentlight (); // Exemple de lampe cristalline Ilight Crystallight = new Crystallight (); // General Switch System.out.println ("- General Switch--"); Commutateur de commutation de bases1 = nouveau commutateur de bases (cristallight); switch1.makelight (); System.out.println ("/ n-- Remote Control Switch--"); // Commutateur de télécommande RemoteControlSwitch = new RemoteControlSwitch (incandescentlight); RemoteControlSwitch.makerMoteLlight (1); }}Résultats en cours d'exécution
- commutateur général-
La lampe en cristal a été allumée ...
Éclairage de lampe cristalline!
La lampe en cristal a été éteinte ...
- Commutateur de télécommande-
La lampe à incandescence a été allumée ...
Éclairage à la lampe à incandescence!
... il fait chaud maintenant!
La lampe à incandescence a été éteinte ...
3. Principes de conception
1 Essayez d'utiliser l'agrégation d'objets des associations faibles et évitez d'utiliser de fortes associations d'héritage.
2 Abstraction et découplage de la mise en œuvre.
4. Utiliser des occasions
1 Je ne veux pas une relation de liaison fixe entre la classe abstraite et la partie d'implémentation
Les parties d'abstraction et de mise en œuvre de 2 classes doivent être étendues grâce à la méthode de silençage.
3 La modification d'une pièce de mise en œuvre abstraite n'affecte pas le client, c'est-à-dire que le code client n'a pas à être recompilé.
5. Diagramme de classe statique du mode Bridge
Pour plus d'informations sur les algorithmes Java, les lecteurs qui sont intéressés par ce site peuvent afficher les sujets: "Structure de données Java et tutoriel d'algorithme", "Résumé des conseils de nœud de Dom Operation Java", "Résumé du fichier Java et des conseils d'opération de répertoire" et "Résumé des conseils d'opération Java Cache"
J'espère que cet article sera utile à la programmation Java de tous.