この記事では、java に関する関連知識を提供します。主にブリッジ モードに関連する問題を紹介します。ブリッジ モードでは、抽象化と実装が分離され、独立して変更できるため、抽象化が軽減されます。見てみましょう。これら 2 つの可変次元の結合度で、皆さんの役に立つことを願っています。
推奨学習: 「Java ビデオ チュートリアル 」
実際には、2 つのクラスを持つことができるクラスがたくさんあります。以上 2 次元での変化。たとえば、グラフィックスを形状や色で分割できます。継承を使用すると、m 個の形状と n 色のグラフィックスが m*n 種類存在します。対応するサブカテゴリが多数あるだけでなく、拡張比較の難易度。
たとえば、さまざまな色やフォントのテキスト、さまざまなブランドやメーカーの車、さまざまな性別や職業の男性と女性、さまざまなプラットフォームやさまざまなファイル形式をサポートするメディア プレーヤーなどです。これらの問題は、ブリッジ モードを使用するとうまく解決できます。
抽象化と実装を分離し、独立して変更できるようにします。継承関係ではなく組み合わせ関係を使用して実装されるため、抽象化と実装の 2 つの可変次元の結合度が減少します。
パターン タイプ: 構造設計パターン
#原理クラス図:
原理クラス図の説明:
利点:
##集計関係は抽象化層で確立されるため、開発者は抽象化をターゲットにする必要があります。システム内で独立して変化する 2 つの次元を正確に識別できるため、システムの理解と設計がさらに難しくなります。
この構造図の実装コード:
実現された役割:
/** * 实视化角色 */public interface Implemntor { public void OperationImpl();}
/** * 具体实现化角色 */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(); }}
出力:
扩展抽象化角色被访问 具体实现化角色被访问
4. ブリッジ モードの実装例
車が道路を走行するときの変化には 2 つの側面があります。車の種類が異なります、そして
道路もセメント道路とアスファルト道路に分かれます写真:
#交通手段の種類:
#
/** * 交通工具类 */public interface Vehicle { public void drive();}
/** * 具体的交通工具:小汽车 */public class Car implements Vehicle{ @Override public void drive() { System.out.println("小汽车"); }}
/** * 具体的交通工具:大巴车 */public class Bus implements Vehicle{ @Override public void drive() { System.out.println("大巴车"); }}
/** * 抽象的路 */public abstract class Road { protected Vehicle vehicle; public Road(Vehicle vehicle){ this.vehicle = vehicle; } public abstract void driveOnRoad();}
/** * 具体的路:油柏路 */public class UnpavedRoad extends Road{ public UnpavedRoad(Vehicle vehicle) { super(vehicle); } @Override public void driveOnRoad() { super.vehicle.drive(); System.out.println("行驶在油柏路"); }}
/** * 具体的路:水泥路 */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(); }}
小汽车 行驶在水泥路 大巴车 行驶在水泥路
对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用.
推荐学习:《java视频教程》
以上がJava ブリッジ モードの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。