JAva 23種設計モード-07-javaブリッジモード(Bridge Pattern)


目次
  • ディレクトリ
  • ブリッジモード
  • 実例
  • 定義
  • テスト
  • 実装形態
  • UML & Code
  • UML
  • Code

  • シリーズナビゲーション
  • ブリッジモード
    ブリッジ(Bridge)は抽象化と解消結合を実現し,両者が独立に変化できるようにするために用いられる.このタイプの設計モードは構造型モードに属し,抽象化と実装化の間のブリッジ構造を提供することによって両者のデカップリングを実現する.
    このモードは、エンティティクラスの機能がインタフェース実装クラスとは独立するようにブリッジとしてのインタフェースに関する.この2つのタイプのクラスは、互いに影響を及ぼさずに構造化されて変更することができる.
    ブリッジパターン(Bridge Pattern)の使い方を以下の例で実証する.ここで,同じ抽象クラスメソッドを用いてもよいが,異なるブリッジ実装クラスを用いて,異なる色の円を描く.
    実例
    クラス情報の概要:
    クラス名
    説明
    Main.java
    メソッドの総入口
    Truck.java
    大型トラック
    HighWay.java
    高速道路
    AbstractRoad.java
    抽象道路類
    Street.java
    街道
    Car.java
    乗用車
    Bus.java
    バス
    定義#テイギ#
  • Truck.java
  • package com.ryo.design.pattern.note.bridge;
    
    /**
     *    
     * @author bbhou
     * @date 2017/8/11
     */
    public class Truck implements Car {
        @Override
        public void run() {
            System.out.println("Truck is running ");
        }
    }
    
  • HighWay.java
  • package com.ryo.design.pattern.note.bridge;
    
    /**
     *     
     * @author bbhou
     * @date 2017/8/11
     */
    public class HighWay extends AbstractRoad {
        public HighWay(Car car) {
            super(car);
        }
    
        @Override
        public void onRoad() {
            System.out.println("On the highway");
        }
    }
    
  • AbstractRoad.java
  • package com.ryo.design.pattern.note.bridge;
    
    /**
     *      
     * @author bbhou
     * @date 2017/8/11
     */
    public abstract class AbstractRoad {
    
        private Car car;
    
        public AbstractRoad(Car car) {
            this.car = car;
        }
    
        /**
         *    
         */
        public abstract void onRoad();
    
        /**
         *      
         */
        public void carRunOnRoad() {
            car.run();
            onRoad();
        }
    
    }
    
  • Street.java
  • package com.ryo.design.pattern.note.bridge;
    
    /**
     *   
     * @author bbhou
     * @date 2017/8/11
     */
    public class Street extends AbstractRoad {
        public Street(Car car) {
            super(car);
        }
    
        @Override
        public void onRoad() {
            System.out.println("On the street");
        }
    }
    
  • Car.java
  • package com.ryo.design.pattern.note.bridge;
    
    /**
     *     
     *
     * @author bbhou
     * @date 2017/8/11
     */
    public interface Car {
    
        /**
         *   
         */
        void run();
    
    }
    
  • Bus.java
  • package com.ryo.design.pattern.note.bridge;
    
    /**
     *
     *     
     * @author bbhou
     * @date 2017/8/11
     */
    public class Bus implements Car {
    
        @Override
        public void run() {
            System.out.println("Bus is running ");
        }
    
    }
    

    テスト
  • Main.java
  • /*
     * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
     * Copyright (c) 2012-2018. houbinbini Inc.
     * design-pattern All rights reserved.
     */
    
    package com.ryo.design.pattern.note.bridge;
    
    /**
     * 

    * *
     Created: 2018/5/14   6:49  
    *
     Project: design-pattern  
    *
    * @author houbinbin
    * @version 1.0
    * @since JDK 1.7
    */
    public class Main {
    public static void main(String[] args) {
    AbstractRoad road = new Street(new Bus());
    AbstractRoad road2 = new HighWay(new Truck());
    road.carRunOnRoad();
    road2.carRunOnRoad();
    }
    }
  • Bus is running 
    On the street
    Truck is running 
    On the highway

    インプリメンテーションモード
    UML & Code
    UML
    UMLは のように する
    Code
    コードアドレス
    ブリッジモード
    シリーズナビゲーション
    シリーズナビゲーション