検索
ホームページJava&#&チュートリアルJava ブリッジ モードの詳細な紹介

この記事では、java に関する関連知識を提供します。主にブリッジ モードに関連する問題を紹介します。ブリッジ モードでは、抽象化と実装が分離され、独立して変更できるため、抽象化が軽減されます。見てみましょう。これら 2 つの可変次元の結合度で、皆さんの役に立つことを願っています。

Java ブリッジ モードの詳細な紹介

推奨学習: 「Java ビデオ チュートリアル

実際には、2 つのクラスを持つことができるクラスがたくさんあります。以上 2 次元での変化。たとえば、グラフィックスを形状や色で分割できます。継承を使用すると、m 個の形状と n 色のグラフィックスが m*n 種類存在します。対応するサブカテゴリが多数あるだけでなく、拡張比較の難易度。

たとえば、さまざまな色やフォントのテキスト、さまざまなブランドやメーカーの車、さまざまな性別や職業の男性と女性、さまざまなプラットフォームやさまざまなファイル形式をサポートするメディア プレーヤーなどです。これらの問題は、ブリッジ モードを使用するとうまく解決できます。


1. ブリッジ モードの定義

抽象化と実装を分離し、独立して変更できるようにします。継承関係ではなく組み合わせ関係を使用して実装されるため、抽象化と実装の 2 つの可変次元の結合度が減少します。

パターン タイプ: 構造設計パターン

#原理クラス図:
Java ブリッジ モードの詳細な紹介
原理クラス図の説明:

  1. クライアント クラス:ブリッジ モード 呼び出し元
  2. #Abstract クラス (Abstraction): は Implementor、つまりその実装クラス ConcretelmplementorA を維持します...この 2 つは結合された関係にあり、Abstraction はブリッジとして機能します
  3. RehinedAbstraction: は、抽象化抽象クラス lplementor: 動作実装クラスのインターフェイス
  4. ConcretelmplementorA/B: 動作の具象実装クラス## のサブクラスです。
  5. #UML 図より: ここでの抽象クラスとインターフェイスは集約関係にあり、実際には、呼び出しと呼び出される間の関係が

2 です。ブリッジモードの長所と短所

利点:

    抽象化と実装の分離、強力な拡張性
  1. オープンの原則に準拠最後に
  2. #合成と再利用の原則に準拠
  3. 実装の詳細は顧客に透過的
#欠点:

##集計関係は抽象化層で確立されるため、開発者は抽象化をターゲットにする必要があります。システム内で独立して変化する 2 つの次元を正確に識別できるため、システムの理解と設計がさらに難しくなります。
  • 3. ブリッジ モードの構造

ブリッジ パターンには、次の主な役割が含まれます:

抽象化の役割:
    抽象クラスを定義し、実装オブジェクトを含みます。 参照
  1. 拡張抽象化 (洗練された抽象化) ロール
  2. : 抽象ロールのサブクラスであり、親クラスのビジネス メソッドを実装します。と、組み合わせ関係を通じて実装されたロールのビジネス メソッドを呼び出します。
  3. Implementor ロール: 実装されたロールのインターフェイスを定義します。これは、抽象ロール呼び出し
  4. 具体的な Implementor ロールを拡張するために使用されます。実装されたロール インターフェイスの具体的な実装を示します。
  5. 構造図:

この構造図の実装コード: Java ブリッジ モードの詳細な紹介
実現された役割:

/**
 * 实视化角色
 */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 つの異なるクラス レベルに配置し、2 つのレベルを独立して変更できるようにします

車が道路を走行するときの変化には 2 つの側面があります。車の種類が異なります、そして

道路もセメント道路とアスファルト道路に分かれます

写真:

#交通手段の種類:
#

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

    public void drive();}
Java ブリッジ モードの詳細な紹介#具体的な交通手段: 車

/**
 * 具体的交通工具:小汽车
 */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();

    }}
出力 :

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

5、桥接模式的注意事项

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

6、桥接模式应用场景

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

推荐学习:《java视频教程

以上がJava ブリッジ モードの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はCSDNで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい