suchen
HeimJavajavaLernprogrammDetaillierte Einführung in den Java-Bridging-Modus

Dieser Artikel vermittelt Ihnen relevantes Wissen über Java, das hauptsächlich die Probleme im Zusammenhang mit dem Bridge-Modus vorstellt. Der Bridge-Modus trennt Abstraktion und Implementierung, sodass sie sich unabhängig voneinander ändern können, wodurch die beiden möglichen Probleme der Abstraktion und Implementierung reduziert werden Schauen Sie sich den Kopplungsgrad variabler Abmessungen an. Ich hoffe, dass er für alle hilfreich ist.

Detaillierte Einführung in den Java-Bridging-Modus

Empfohlenes Lernen: „Java-Video-Tutorial

Tatsächlich gibt es im wirklichen Leben viele Kategorien, die beispielsweise nach Form und Farbe unterteilt werden können Wenn Vererbung verwendet wird, gibt es m * n Arten von Grafiken mit m Formen und n Farben, was nicht nur vielen Unterklassen entspricht, sondern auch die Erweiterung erschwert.

Zum Beispiel Text in verschiedenen Farben und Schriftarten, Autos unterschiedlicher Marken und Stärken, Männer und Frauen unterschiedlichen Geschlechts und Berufs, Mediaplayer, die unterschiedliche Plattformen und Dateiformate unterstützen usw. Diese Probleme lassen sich gut lösen, wenn Sie den Bridge-Modus verwenden.


1. Die Definition des Brückenmusters

trennt Abstraktion und Implementierung, sodass sie sich unabhängig voneinander ändern können. Es wird durch die Verwendung einer Kombinationsbeziehung anstelle einer Vererbungsbeziehung implementiert, wodurch der Kopplungsgrad der beiden variablen Dimensionen von Abstraktion und Implementierung verringert wird. Mustertyp: Strukturelles Klassendiagramm:

Abbildung Beschreibung:


Detaillierte Einführung in den Java-Bridging-ModusClient-Klasse:
Der Aufrufer des Bridge-Modus

Abstrakte Klasse (Abstraktion):
    Behält Implementor/d. h. seine Implementierungsklasse ConcretelmplementorA... Die beiden stehen in einer kombinierten Beziehung und wirken als Abstraktion als Brücke
  1. RehinedAbstraction:
  2. ist eine Unterklasse der abstrakten Abstraktionsklasse limplementor: Schnittstelle der Verhaltensimplementierungsklasse
  3. ConcretelmpllementorA/B:
  4. konkrete Implementierungsklasse des Verhaltens
  5. Aus dem UML-Diagramm:
  6. Die abstrakte Klasse und Schnittstelle hier sind eine Aggregationsbeziehung. Tatsächlich handelt es sich um die Beziehung zwischen Anrufen und Angerufenwerden des Öffnens und Schließens
  7. Entspricht dem Prinzip der Synthese und Wiederverwendung
  8. Die Implementierungsdetails sind für Kunden transparent
  9. Nachteile:

Da die Aggregationsbeziehung auf der Abstraktionsebene hergestellt wird, müssen Entwickler entwerfen und Programm zur Abstraktion und in der Lage sein, zwei sich unabhängig voneinander ändernde Dimensionen im System korrekt zu identifizieren. Dies erhöht die Schwierigkeit, das System zu verstehen und zu entwerfen. 3. Die Struktur des Brückenmodus umfasst die folgenden Hauptfunktionen Rollen:

    Abstraktionsrolle (Abstraktion):
  1. Definieren Sie abstrakte Klassen und schließen Sie einen Verweis auf das implementierte Objekt ein Die übergeordnete Klasse ruft die Geschäftsmethoden in der implementierten Rolle über die Kombinationsbeziehung auf.
  2. Implementiererrolle: Definiert die Schnittstelle der implementierten Rolle, die durch Erweitern der abstrakten Rolle aufgerufen werden kann: stellt die spezifische Implementierung der bereit implementierte Rollenschnittstelle. Strukturdiagramm:
Der Implementierungscode dieses Strukturdiagramms:

Realisierungsrolle:
  • /**
     * 实视化角色
     */public interface Implemntor {
    
        public void OperationImpl();}
    Konkrete Implementierungsrolle:
/**
 * 具体实现化角色
 */public class ConcreteImplementorA implements Implemntor{
    @Override
    public void OperationImpl() {
        System.out.println("具体实现化角色被访问");
    }}

Abstrakte Rolle:

/**
 * 抽象化角色
 */public abstract class Abstraction {

    protected Implemntor implemntor;

    protected Abstraction(Implemntor implemntor){
        this.implemntor = implemntor;
    }

    public abstract void Operation();}
    Erweiterte abstrakte Rolle:
  1. /**
     * 扩展抽象化角色
     */public class RefinedAbstraction extends Abstraction{
    
        protected RefinedAbstraction(Implemntor implemntor) {
            super(implemntor);
        }
    
        public void Operation(){
            System.out.println("扩展抽象化角色被访问");
            implemntor.OperationImpl();
        }}
  2. Testklasse:
  3. public class Test {
        public static void main(String[] args) {
    
            Implemntor implemntor = new ConcreteImplementorA();
            Abstraction abs = new RefinedAbstraction(implemntor);
            abs.Operation();
    
        }}
  4. Ausgabe:
  5. 扩展抽象化角色被访问
    具体实现化角色被访问
  6. 4. Fallimplementierung des Bridge-Modus

Platzieren Sie Implementierung und Abstraktion in zwei verschiedenen Klassenebenen, sodass die beiden Ebenen sein können Unabhängig geändert

Transportfahrzeuge fahren hier auf der Straße.

Die Arten des Transports sind unterschiedlich. Detaillierte Einführung in den Java-Bridging-ModusStraßen werden in Betonstraßen und Asphaltstraßen unterteilt

Transportklasse:

/**
 * 交通工具类
 */public interface Vehicle {

    public void drive();}

Spezifisches Transportmittel: Auto

/**
 * 具体的交通工具:小汽车
 */public class Car implements Vehicle{
    @Override
    public void drive() {
        System.out.println("小汽车");
    }}

Spezifisches Transportmittel: Bus

/**
 * 具体的交通工具:大巴车
 */public class Bus implements Vehicle{
    @Override
    public void drive() {
        System.out.println("大巴车");
    }}

Zusammenfassung. Straße:

/**
 * 抽象的路
 */public abstract class Road {

    protected Vehicle vehicle;

    public Road(Vehicle vehicle){
        this.vehicle = vehicle;
    }

    public abstract void driveOnRoad();}

Betonstraße: Asphaltstraße

/**
 * 具体的路:油柏路
 */public class UnpavedRoad extends Road{
    public UnpavedRoad(Vehicle vehicle) {
        super(vehicle);
    }

    @Override
    public void driveOnRoad() {

        super.vehicle.drive();
        System.out.println("行驶在油柏路");
    }}

Spezifische Straße: Betonstraße

/**
 * 具体的路:水泥路
 */public class CementRoad extends Road{
    public CementRoad(Vehicle vehicle) {
        super(vehicle);
    }

    @Override
    public void driveOnRoad() {
        super.vehicle.drive();
        System.out.println("行驶在水泥路");
    }}

Testklasse:

//测试public class Test {
    public static void main(String[] args) {

        Road roadCar = new CementRoad(new Car());
        roadCar.driveOnRoad();

        Road roadBus = new CementRoad(new Bus());
        roadBus.driveOnRoad();

    }}

Ausgabe:

小汽车
行驶在水泥路
大巴车
行驶在水泥路

5、桥接模式的注意事项

  1. 实现了抽象和实现部分的分离,从而极大的提供了系统的灵活性,让抽象部分和实现部分独立开来,这有助于系统进行分层设计,从而产生更好的结构化系统
  2. 对于系统的高层部分,只需要知道抽象部分和实现部分的接口就可以了,其它的部分由具体业务来完成
  3. 桥接模式替代多层继承方案,可以减少子类的个数,降低系统的管理和维护成本
  4. 桥接模式的引入增加了系统的理解和设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计和编程
  5. 桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围有一定的局限性,即需要有这样的应用场景

6、桥接模式应用场景

对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用.

推荐学习:《java视频教程

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den Java-Bridging-Modus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:CSDN. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?Mar 17, 2025 pm 05:46 PM

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement?Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement?Mar 17, 2025 pm 05:45 PM

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?Mar 17, 2025 pm 05:44 PM

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?Mar 17, 2025 pm 05:43 PM

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?Mar 17, 2025 pm 05:35 PM

Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung