JAva 23種設計モード-07-javaブリッジモード(Bridge Pattern)
7209 ワード
目次ディレクトリ ブリッジモード 実例 定義 テスト 実装形態 UML & Code UML Code
シリーズナビゲーション ブリッジモード
ブリッジ(Bridge)は抽象化と解消結合を実現し,両者が独立に変化できるようにするために用いられる.このタイプの設計モードは構造型モードに属し,抽象化と実装化の間のブリッジ構造を提供することによって両者のデカップリングを実現する.
このモードは、エンティティクラスの機能がインタフェース実装クラスとは独立するようにブリッジとしてのインタフェースに関する.この2つのタイプのクラスは、互いに影響を及ぼさずに構造化されて変更することができる.
ブリッジパターン(Bridge Pattern)の使い方を以下の例で実証する.ここで,同じ抽象クラスメソッドを用いてもよいが,異なるブリッジ実装クラスを用いて,異なる色の円を描く.
実例
クラス情報の概要:
クラス名
説明
Main.java
メソッドの総入口
Truck.java
大型トラック
HighWay.java
高速道路
AbstractRoad.java
抽象道路類
Street.java
街道
Car.java
乗用車
Bus.java
バス
定義#テイギ# Truck.java HighWay.java AbstractRoad.java Street.java Car.java Bus.java
テスト Main.java
ブリッジ(Bridge)は抽象化と解消結合を実現し,両者が独立に変化できるようにするために用いられる.このタイプの設計モードは構造型モードに属し,抽象化と実装化の間のブリッジ構造を提供することによって両者のデカップリングを実現する.
このモードは、エンティティクラスの機能がインタフェース実装クラスとは独立するようにブリッジとしてのインタフェースに関する.この2つのタイプのクラスは、互いに影響を及ぼさずに構造化されて変更することができる.
ブリッジパターン(Bridge Pattern)の使い方を以下の例で実証する.ここで,同じ抽象クラスメソッドを用いてもよいが,異なるブリッジ実装クラスを用いて,異なる色の円を描く.
実例
クラス情報の概要:
クラス名
説明
Main.java
メソッドの総入口
Truck.java
大型トラック
HighWay.java
高速道路
AbstractRoad.java
抽象道路類
Street.java
街道
Car.java
乗用車
Bus.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 ");
}
}
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");
}
}
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();
}
}
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");
}
}
package com.ryo.design.pattern.note.bridge;
/**
*
*
* @author bbhou
* @date 2017/8/11
*/
public interface Car {
/**
*
*/
void run();
}
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 ");
}
}
テスト
/*
* 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
コードアドレス
ブリッジモード
シリーズナビゲーション
シリーズナビゲーション