抽象とブリッジモードの両方が個々にお互いを妨害することなく変更することができる、分離を実現することができます。
それは、それらの間のブリッジで接続され、そのブリッジモードと呼ばれています。
具体的な例を与える以下、いくつかの実装クラスRedCircle、GreenCircleがあり、形状は抽象クラスであると仮定します。
ブリッジDrawAPIを介してそれらの間に接続されたインターフェース。
インタフェースブリッジ(ブリッジブリッジモード)
パブリック インターフェースDrawAPI { 公共 ボイド drawCircle(フロート R、フロート X、フロートY) }
特定のカテゴリブリッジインタフェースを実装する(実装部ブリッジモード)
GreenCircle
パブリック クラス GreenCircleは実装DrawAPI { @Override 公共 ボイド drawCircle(フロート R、フロート X、フロートY){ System.out.printlnは( + R + "X" + X + "Y: "greenCircleを描く" + "R"を: 「+のY)。 } }
RedCircle
パブリック クラス RedCircleは実装DrawAPI { @Override 公共 ボイド drawCircle(フロート R、フロート X、フロートY){ System.out.printlnは( + R + "X" + X + "Y: "redCircleを描く" + "R"を: 「+のY)。 } }
形状(要約セクションブリッジモード)形状のDrawAPI(ブリッジ)を使用し
パブリック 抽象 クラス形{ 保護DrawAPI drawAPI; 公共状(DrawAPI drawAPI){ // 抽象クラスは、クラスであるが、それ自体でインスタンス化できない この .drawAPI = drawAPI; // サブクラスがインスタンス化されることによって、典型的には、(引数なしでデフォルトコンストラクタによって呼び出さ法)、あなたは、コンストラクタを追加する場合は、サブクラスを参照する必要があります。 } 公共の 抽象 ボイドドロー(); }
サークル:形状具象クラス
パブリック クラスサークル延び形{ プライベート フロートRと、 プライベート フロートX; プライベート フロートのy; 公共サークル(フロート R、フロート X、フロートY、DrawAPI drawAPI){ スーパー(drawAPI)。 // TODO自動生成コンストラクタスタブ この .R = R。 この .X =のX。 この .Y = Y。 } @Override 公共 ボイドドロー(){ //TODO自動生成方法スタブ drawAPI.drawCircle(R、X、Y) } }
テスト:
パブリック クラスメイン{ 公共 静的 ボイドメイン(文字列[]引数){ 形greenCircle = 新しいサークル(2、0、0、新しいGreenCircle())。 greenCircle.draw(); redCircle形状 = 新しいサークル(2、0、0、新しいRedCircle())。 redCircle.draw(); } }
greenCirclerを描く:2.0 X:0.0、Y:0.0
ドローredCircler: 2.0 X:0.0、Y:0.0
抽象と接続部との間の抽象化との間に独立した形質転換することや抽象クラスには影響しません特定のカテゴリの変更を達成することができますブリッジによって達成されます。
また、それは独立して変換され、拡張が容易なことができ、どちらも2が変更されていない接続するブリッジ、限り、インパクトのクラスを達成するための抽象クラスを変更します。