Dieser Artikel beschreibt die Verwendung des Bridge -Modus zum Implementieren von Switch- und Lichtbeleuchtungsfunktionen. Teilen Sie es für Ihre Referenz wie folgt weiter:
1. Musterdefinition
Der Bridge -Modus, auch als Bridge -Modus bekannt, in Softwaresystemen, aufgrund seiner eigenen Logik gibt es zwei oder mehr Dimensionen von Änderungen. Wie man mit solchen mehrdimensionalen Änderungen umgeht, ermöglicht das Bridge-Modus das Softwaresystem, sich in mehreren Richtungen leicht zu ändern, ohne zusätzliche Komplexität einzuführen.
Die drei Schlüsselwörter des Brückenmodus sind: Abstraktion, Implementierung und Entkopplung.
2. Beispiele des Modells
1. Methode zur Analyse der Überbrückungsmodus
Wir leihen uns Lichtbeleuchtung aus, um diesen Modus zu veranschaulichen.
Verwenden Sie ohne Vererbung die Objektkombinationsmethode, um die starke Beziehung zwischen Schalter und Lichter in schwache Beziehungen zu verwandeln.
2 Brückenmodus Statische Klassenmodell
3 Code Beispiele
3.1 Erstellen Sie eine elektrische Lichtschnittstelle
Paket com.demo.bridge.lights;/** * Light Interface * * @Author * */public interface ilight {// Schalten Sie die aktuelle öffentliche void ElectricConnected () ein; // Beleuchtung Public void Light (); // Strom von öffentlicher void elektrisch ();}3.2 General Switches erstellen
Paket com.demo.bridge.switchs; import com.demo.bridge.lights.ilight;/** * Switch Top-Level-Klasse * * @author * */public class BaseSwitch {// Verwenden Sie die Kombination, um Ilight auf interne private Attribute zu setzen. // Die Konstruktion der Methode injiziert externe Lichttyp in öffentliche BaseSwitch (Ilight Light) {this.light = light; } / *** Beleuchtungsmethode* / public Final void makelight () {// Schalter einschalten und den Strom einschalten. // Leuchten this.light.light (); // den Schalter ausschalten, um den Strom auszuschalten. }}3.3 Erstellen Sie einen Remote -Switch
Paket com.demo.bridge.switchs.sub; import com.demo.bridge.lights.ilight; com.demo.bridge.switchs.baseSwitch;/** * Der Fernbedienungsschalter erbt die BaseSwitch -Erweiterungsfunktion * * @Author * */Public Class remoteControls -{/ constrect remoteControls -tearswitch {/ // constrect method remotecontrols (utheswitch {// constrect method baseSwitch (yeSSwitch {// constrect method baseSwitch (y) Super (Licht); } / *** Verwenden Sie den Fernbedienungsschalter, um das Licht auf** @param operatorColor* Lichtfarbe* / public Final Void Makeremotelight (int Operacolor) {// Einschalten des Schalters ein, um den Strom zu aktivieren. // Light this.light.light (); String color = ""; Switch (OperColor) {Fall 1: color = "Warm Color"; brechen; Fall 2: color = "blau"; brechen; Fall 3: color = "rot"; brechen; Standard: color = "White"; brechen; } System.out.println ("... jetzt ist" + color + "!"); // Schalter schließen, um den Strom auszuschalten. }}3.4 Implementierung von Glühlampen
Paket com.demo.bridge.lights.impl; import com.demo.bridge.lights.ilight;/** * incandescent launch Implementierung * * @Author * */public class incandescent light implements ilogtlight } // Das aktuelle öffentliche void ElectricConnected () {System.out.println ("Glühlampe eingeschaltet ..."); } // Beleuchtung public void light () {System.out.println ("Gläubige Beleuchtung!"); }}3.5 Implementierung von Kristalllampen
Paket com.demo.bridge.lights.impl; com.demo.bridge.lights.ilight;/** * Crystallight Implementierungen * @Author * */public class Crystallight implementiert ILIGHT ILIGHT {// Current Off öffentlicher void elektrischer Elektrogeplan () {System.out.println ("Crystallight wurde abgeschaltet ..."); } // Das aktuelle öffentliche void ElectricConnected () {System.out.println ("Crystallight wurde eingeschaltet ..."); } // Beleuchtung public void light () {System.out.println ("Kristalllampe Licht!"); }}3.6 Allgemeine Schaltersteuerung Glühlampe, Fernsteuerungskristalllampe Fernschalter
Paket 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.bridge.basesSwitch; @Author * * */public class ClientForBridge {/** * @param args */public static void main (String [] args) {// Incandescentlight Instance ilight incandescentlight = new incandescentlight (); // Kristalllampeninstanz Ilight Crystallight = New Crystallight (); // allgemeine Switch System.out.println ("- Allgemeiner Switch--"); BaseSwitch Switch1 = neuer BasesSwitch (ottandescentlight); Switch1.Makelight (); System.out.println ("/n-- Fernbedienungsschalter"); // Fernsteuerungsschalter remoteControlswitch = new remoteControlswitch (Crystallight); remoteControlswitch.Makeremotelight (1); }}Auslaufergebnisse:
- General Switch-
Die Glühlampe wurde eingeschaltet ...
Glühlampenbeleuchtung!
Die Glühlampe wurde ausgeschaltet ...
- Fernbedienungsschalter-
Die Kristalllampe wurde eingeschaltet ...
Kristalllampenbeleuchtung!
... es ist jetzt warm!
Die Kristalllampe wurde ausgeschaltet ...
3.7 Allgemeine Schaltersteuerungskristalllampe, Fernbedienungsschalter Control Glühlampe Lampe
Paket 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.bridge.basesSwitch; @Author * */public class ClientForBridge {/** * @param args */public static void main (String [] args) {// Incandescentlight Beispiel ilight incandescentlight = new incandescentlight (); // Kristalllampe Beispiel Ilight Crystallight = New Crystallight (); // allgemeine Switch System.out.println ("- Allgemeiner Switch--"); BaseSwitch Switch1 = New BaseSwitch (Crystallight); Switch1.Makelight (); System.out.println ("/n-- Fernbedienungsschalter"); // Fernbedienungsschalter remoteControlswitch = new remoteControlswitch (Glühstoffe); remoteControlswitch.Makeremotelight (1); }}Auslaufergebnisse
- General Switch-
Die Kristalllampe wurde eingeschaltet ...
Kristalllampenbeleuchtung!
Die Kristalllampe wurde ausgeschaltet ...
- Fernbedienungsschalter-
Die Glühlampe wurde eingeschaltet ...
Glühlampenbeleuchtung!
... es ist jetzt warm!
Die Glühlampe wurde ausgeschaltet ...
3. Designprinzipien
1 Versuchen Sie, die Objektaggregation schwacher Assoziationen zu verwenden und zu vermeiden, dass starke Vererbungsassoziationen verwendet werden.
2 Abstraktions- und Implementierungsentkopplung.
4. Verwenden Sie Anlässe
Ich möchte keine feste Bindungsbeziehung zwischen abstrakter Klassen- und Implementierungsteil
Die Abstraktions- und Implementierungsteile von 2 Klassen sollten durch die Methode der Stummschaltung erweitert werden.
3 Die Änderung eines abstrakten Implementierungsteils wirkt sich nicht auf den Client aus, dh der Client -Code muss nicht neu kompiliert werden.
5. Brückenmodus Statische Klassendiagramm
Für weitere Informationen zu Java -Algorithmen können Leser, die an dieser Website interessiert sind, die Themen "Java -Datenstruktur und Algorithmus -Tutorial", "Zusammenfassung der Java -Operation DOM -Knoten -Tipps", "Zusammenfassung der Java -Datei- und Verzeichnisoperationstipps" und "Zusammenfassung der Java -Cache -Operation Tipps" anzeigen
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.