Java記述設計モード(08):ブリッジモード
4084 ワード
一、ブリッジモードの概要
1、基礎説明
ブリッジモードはオブジェクトの構造モードです.ハンドル(Handle and Body)モードまたはインターフェース(Interface)モードとも呼ばれる.ブリッジモードは「抽象化(Abstraaction)とインプリメンテーション(Implementation)を脱結合し、両者を独立に変化させる」ことを意図している.
2、シーン問題の説明
1)、シーン分析
複雑なシステムでは、メッセージ通知は必須モジュールであり、一般的なパッケージ方式は主に次の2つの方法から着手します.メッセージタイプ メッセージ受信
2)、シーン図解
3)、ソースコード実現
二、ブリッジモード
1、パターン図解
2、コアキャラクター抽象化(Abstraction)ロール 与えられた定義を抽象化し、実装オブジェクトへの参照を保存します.修正抽象化(RefinedAbstraction)ロール 抽象化ロールを拡張し、修正親クラスの抽象化の定義を変更します.インプリメンテーションロール このロールは、キャラクタを実装するインタフェースを与えるが、具体的な実装は与えない.具現化(ConcreteImplementor)ロール このロールは、キャラクタインタフェースを実装するための具体的な実装を与える.
3、ソースパッケージ
三、Java応用シーン
Javaアプリケーションにおけるブリッジモードの非常に典型的な例はJDBCドライブである.抽象APIは各種のデータベースエンジンに対してSQL指令を出すことができて、直接データベースエンジンとインタラクティブではありませんて、JDBCドライブはこの下層の仕事を担当します.
JDBCのこのようなアーキテクチャは、抽象部分と具体部分を分離し、抽象部分と具体部分を独立して拡張することができる.
四、ソースアドレス
1、基礎説明
ブリッジモードはオブジェクトの構造モードです.ハンドル(Handle and Body)モードまたはインターフェース(Interface)モードとも呼ばれる.ブリッジモードは「抽象化(Abstraaction)とインプリメンテーション(Implementation)を脱結合し、両者を独立に変化させる」ことを意図している.
2、シーン問題の説明
1)、シーン分析
複雑なシステムでは、メッセージ通知は必須モジュールであり、一般的なパッケージ方式は主に次の2つの方法から着手します.
(user-client)
(system-client)
(email)
(msg)
2)、シーン図解
3)、ソースコード実現
/**
*
*/
public class C01_InScene {
public static void main(String[] args) {
//
MsgImplementor implementor = new SendBySMS() ;
//
AbstractMsg abstractMessage = new UserMsg(implementor);
abstractMessage.sendMessage(" ", " A0001");
//
implementor = new SendByEmail() ;
abstractMessage = new AdminMsg(implementor);
abstractMessage.sendMessage(" ", " S0001");
}
}
/**
*
*/
abstract class AbstractMsg {
//
MsgImplementor impl ;
public AbstractMsg (MsgImplementor impl){
this.impl = impl ;
}
/**
* ,
* @param message
* @param toUser
*/
public void sendMessage (String message, String toUser){
this.impl.send(message, toUser);
}
}
class AdminMsg extends AbstractMsg{
public AdminMsg(MsgImplementor impl) {
super(impl);
}
@Override
public void sendMessage(String message, String toUser) {
message = " :"+message;
super.sendMessage(message, toUser);
}
}
class UserMsg extends AbstractMsg{
public UserMsg(MsgImplementor impl) {
super(impl);
}
@Override
public void sendMessage(String message, String toUser) {
message = " :" + message ;
super.sendMessage(message, toUser);
}
}
/**
*
*/
interface MsgImplementor {
void send (String message , String toUser) ;
}
class SendBySMS implements MsgImplementor{
@Override
public void send(String message, String toUser) {
System.out.println(" :"+toUser+"; :"+message);
}
}
class SendByEmail implements MsgImplementor{
@Override
public void send(String message, String toUser) {
System.out.println(" :"+toUser+"; :"+message);
}
}
二、ブリッジモード
1、パターン図解
2、コアキャラクター
3、ソースパッケージ
abstract class Abstraction {
private Implementor implementor ;
public Abstraction (Implementor implementor){
this.implementor = implementor ;
}
//
public void operation (){
implementor.operationImpl();
}
}
class RefinedAbstraction extends Abstraction{
public RefinedAbstraction(Implementor implementor) {
super(implementor);
}
//
public void otherOperation(){
}
}
abstract class Implementor {
// ,
public abstract void operationImpl () ;
}
class ConcreteImplementorA extends Implementor{
@Override
public void operationImpl() {
System.out.println("ConcreteImplementorA.operationImpl()");
}
}
class ConcreteImplementorB extends Implementor{
@Override
public void operationImpl() {
System.out.println("ConcreteImplementorB.operationImpl()");
}
}
三、Java応用シーン
Javaアプリケーションにおけるブリッジモードの非常に典型的な例はJDBCドライブである.抽象APIは各種のデータベースエンジンに対してSQL指令を出すことができて、直接データベースエンジンとインタラクティブではありませんて、JDBCドライブはこの下層の仕事を担当します.
JDBCのこのようなアーキテクチャは、抽象部分と具体部分を分離し、抽象部分と具体部分を独立して拡張することができる.
四、ソースアドレス
GitHub :
https://github.com/cicadasmile/model-arithmetic-parent
:
https://gitee.com/cicadasmile/model-arithmetic-parent