Latest web development tutorials

ブリッジモード

二つの独立して変化させることができるように、ブリッジ(ブリッジ)は、デカップリングおよび抽象化を達成するために使用されます。 デザインパターンのこのタイプの構造化された抽象化を提供し、デカップリングを達成するために2つの間のブリッジによって構造モデルに属します。

このモデルは、関数インタフェースクラスのタイプのエンティティの独立を可能にするブリッジインタフェースとして含まれます。 クラスのこれらの2つのタイプが変化し、お互いに影響を与えるように構成することができます。

以下の実施例により我々は、ブリッジモード(ブリッジ・パターン)の使用を実証します。 これはあなたが同じ方法が、異なる色の円を描くように実装クラスを橋渡し異なる抽象クラスを使用することができます。

入門

意図:分離の一部の抽象化と実装、彼らは独立して変化することができるように。

主なソリューション:変更される可能性があり、様々な状況では、クラスの継承が爆発を引き起こす可能性があり、それは柔軟な拡張ではありません。

使用するとき:実装分類システムを複数の角度を有していてもよく、それぞれの角度が変更されることがあります。

修正方法:このマルチアングルの分類を分離入れ、それらが変更とは無関係である、それらの間の結合を低減。

キーコード:抽象クラスの実装に依存するクラス。

応用例:実現可能と等価である魂と体、抽象前者対応し、:1、豚から豚元帥の天蓋の生まれ変わりに生まれ変わっは、この世の仕組みの生まれ変わりは、次の2つのレベル、すなわちに分かれています。委任機能、関数呼び出し物理的なオブジェクトによってクリーチャーは、そのような生き物を動的に選択することができます。 2、壁のスイッチは、スイッチがどのように達成するか内部抽象、具象ないパイプで見ることができます。

利点:1、抽象的分離を達成。2、優れた拡張性を提供します。 3、クライアントに対して透過実装の詳細。

短所:ブリッジモードの導入は、抽象的なデザインとプログラミングのための開発者を必要とする、理解とシステムの設計の難しさ、抽象化層の上に構築された重合関係が増加します。

使用シナリオ:1、システムは、それらがレイヤを抽象化するようにブリッジモードを介して、二つのレベルの間の静的継承のリンクを作成しないように、より多くの柔軟性を追加するために抽象化と役割の具体的な役割部材との間に必要とされる場合関係を確立します。2は、システムクラスの数の急激な増加につながったマルチレベルの継承や相続などのシステムを使用したくない人のために、ブリッジモードは、特に適用可能です。 図3は、変化の二つの独立した寸法は、クラスがあり、これらの2つの寸法を拡大する必要があります。

注意:二つの独立した次元の変化のために、簡単にできるブリッジモードを使用して。

実現

我々はDrawAPIインターフェースブリッジとして持っているとDrawAPIインタフェースエンティティクラスのRedCircle、GreenCircle実施しました。形状は抽象クラス、使用DrawAPIオブジェクトです。 BridgePatternDemo、私たちのデモクラスには、異なる色の円を描画するShapeクラスを使用します。

ブリッジモードUMLダイアグラム

ステップ1

インターフェイスを実装するブリッジを作成します。

DrawAPI.java

パブリックインターフェイスのDrawAPI {
   公共ボイドdrawCircle(int型の半径、int型のx、int型のy)は、
}

ステップ2

インターフェイスクラスのDrawAPIの実装をブリッジ実装エンティティを作成します。

RedCircle.java

パブリッククラスRedCircleは{DrawAPIを実装します
   @Override
   公共ボイドdrawCircle(int型の半径、int型のx、int型のy)は{
      System.out.println( "ドローイングサークル[色:赤、半径:"
         +半径+」で、x: "+ X +"、 "+ Y +"] ");
   }
}

GreenCircle.java

パブリッククラスGreenCircleは{DrawAPIを実装します
   @Override
   公共ボイドdrawCircle(int型の半径、int型のx、int型のy)は{
      System.out.println( "ドローイングサークル[色:緑、半径:"
         +半径+」で、x: "+ X +"、 "+ Y +"] ");
   }
}

ステップ3

抽象クラスの形状を作成するためのインタフェースを使用しDrawAPI。

Shape.java

パブリック抽象クラスの形{
   保護DrawAPI drawAPI。
   保護された形状(DrawAPI drawAPI){
      this.drawAPI = drawAPI。
   }
   パブリック抽象ボイドドロー();	
}

ステップ4

作成したエンティティクラスはShapeインタフェースを実装しています。

Circle.java

パブリッククラスサークル{シェイプを拡張します
   プライベートint型のx、yの、半径;

   公共のサークル(int型のx、int型のy、int型の半径、DrawAPI drawAPI){
      スーパー(drawAPI)。
      this.x = X;  
      this.y = Y;  
      this.radius =半径;
   }

   公共ボイドドロー(){
      drawAPI.drawCircle(半径、x、y)は、
   }
}

ステップ5

Shapeクラスを使用し、異なる色の円を描くDrawAPI。

BridgePatternDemo.java

パブリッククラスBridgePatternDemo {
   公共の静的な無効メイン(文字列[] args){
      redCircle =新しいサークル形状(100100、10、新しいRedCircle());
      greenCircle =新しいサークル形状(100100、10、新しいGreenCircle());

      redCircle.draw()。
      greenCircle.draw()。
   }
}

ステップ6

出力を確認します。

円を描く[色:赤、半径:10、X:100、100]
円を描く[色:緑、半径:10は、X:100、100]