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.
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.
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:
Client-Klasse:
Der Aufrufer des Bridge-Modus
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:
Realisierungsrolle:
/** * 实视化角色 */public interface Implemntor { public void OperationImpl();}Konkrete Implementierungsrolle:
/** * 具体实现化角色 */public class ConcreteImplementorA implements Implemntor{ @Override public void OperationImpl() { System.out.println("具体实现化角色被访问"); }}
/** * 抽象化角色 */public abstract class Abstraction { protected Implemntor implemntor; protected Abstraction(Implemntor implemntor){ this.implemntor = implemntor; } public abstract void Operation();}
/** * 扩展抽象化角色 */public class RefinedAbstraction extends Abstraction{ protected RefinedAbstraction(Implemntor implemntor) { super(implemntor); } public void Operation(){ System.out.println("扩展抽象化角色被访问"); implemntor.OperationImpl(); }}
public class Test { public static void main(String[] args) { Implemntor implemntor = new ConcreteImplementorA(); Abstraction abs = new RefinedAbstraction(implemntor); abs.Operation(); }}
扩展抽象化角色被访问 具体实现化角色被访问
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. Straß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("行驶在水泥路"); }}
//测试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:
小汽车 行驶在水泥路 大巴车 行驶在水泥路
对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用.
推荐学习:《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!