91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java描述設計模式(08):橋接模式

發布時間:2020-10-08 20:34:41 來源:網絡 閱讀:237 作者:知了一笑 欄目:編程語言

本文源碼:GitHub·點這里 || GitEE·點這里

一、橋接模式簡介

1、基礎描述

橋梁模式是對象的結構模式。又稱為柄體(Handle and Body)模式或接口(Interface)模式。橋梁模式的用意是“將抽象化(Abstraction)與實現化(Implementation)脫耦,使得二者可以獨立地變化”。

2、場景問題描述

1)、場景分析

在一個復雜的系統中,消息通知是一個必備模塊,一般封裝方式主要從下面兩個方式入手:

  • 消息類型
    用戶端消息(user-client)
    管理端消息(system-client)
  • 消息接收
郵件發送(email)
短信發送(msg)

2)、場景圖解

Java描述設計模式(08):橋接模式

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、模式圖解

Java描述設計模式(08):橋接模式

2、核心角色

  • 抽象化(Abstraction)角色

    抽象化給出的定義,并保存一個對實現化對象的引用。

  • 修正抽象化(RefinedAbstraction)角色

    擴展抽象化角色,改變修正父類對抽象化的定義。

  • 實現化(Implementor)角色

    這個角色給出實現化角色的接口,但不給出具體的實現。

  • 具體實現化(ConcreteImplementor)角色

    這個角色給出實現化角色接口的具體實現。

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驅動器負責這個底層的工作。

Java描述設計模式(08):橋接模式

JDBC的這種架構,把抽象部分和具體部分分離開來,從而使得抽象部分和具體部分都可以獨立地擴展。

四、源代碼地址

GitHub·地址
https://github.com/cicadasmile/model-arithmetic-parent
GitEE·地址
https://gitee.com/cicadasmile/model-arithmetic-parent

Java描述設計模式(08):橋接模式

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

连州市| 静海县| 襄汾县| 剑阁县| 宜兰县| 青海省| 南靖县| 静海县| 同仁县| 建湖县| 苏尼特左旗| 阿坝| 洛扎县| 桐庐县| 崇礼县| 昌邑市| 北安市| 兴仁县| 时尚| 会同县| 合水县| 永和县| 都昌县| 宜丰县| 隆子县| 普兰县| 碌曲县| 临安市| 新安县| 双峰县| 盐城市| 四平市| 句容市| 延庆县| 石棉县| 凤凰县| 齐齐哈尔市| 葵青区| 靖西县| 黎城县| 云梦县|