最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java設(shè)計模式之橋接模式的示例詳解

 更新時間:2022年02月21日 14:01:47   作者:溫故知新之java  
橋梁模式是對象的結(jié)構(gòu)模式。又稱為柄體(Handle and Body)模式或接口(Interface)模式。本文將通過示例來詳細講解一下這個模式,感興趣的可以學(xué)習(xí)一下

定義

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

案例

需求

通過企業(yè)微信和qq的方式給員工發(fā)送消息

方案一

定義發(fā)送消息的接口

/**
 * 發(fā)送消息的接口
 * @author:liyajie
 * @createTime:2022/2/21 10:33
 * @version:1.0
 */
public interface AbstractSendMsgService {
    // 發(fā)送消息
    public void sendMsg();
}

定義普通消息接口

/**
 * 普通消息接口
 * @author:liyajie
 * @createTime:2022/2/21 11:32
 * @version:1.0
 */
public interface CommonMsg extends AbstractSendMsgService{

}

定義微信消息實現(xiàn)類

/**
 * 發(fā)送消息的實現(xiàn)接口
 * @author:liyajie
 * @createTime:2022/2/21 10:35
 * @version:1.0
 */
public class WxMsgServiceImpl implements CommonMsg{
    @Override
    public void sendMsg() {
        System.out.println("老板使用微信給你發(fā)了消息,快去接收吧");
    }
}

定義QQ消息實現(xiàn)類

/**
 * 發(fā)送消息的實現(xiàn)接口
 * @author:liyajie
 * @createTime:2022/2/21 10:35
 * @version:1.0
 */
public class QqMsgServiceImpl implements CommonMsg{
    @Override
    public void sendMsg() {
        System.out.println("老板使用QQ給你發(fā)了消息,快去接收吧");
    }
}

定義測試類

/**
 * 測試類
 * @author:liyajie
 * @createTime:2022/2/21 10:37
 * @version:1.0
 */
public class Test {
    public static void main(String[] args) {
        new WxMsgServiceImpl().sendMsg();
        new QqMsgServiceImpl().sendMsg();
    }
}

測試結(jié)果

方案二

定義發(fā)送消息抽象接口

/**
 * 發(fā)送消息的抽象接口
 * @author:liyajie
 * @createTime:2022/2/21 10:33
 * @version:1.0
 */
public abstract class NewAbstractSendMsgService {

    protected SendMsgImplementor sendMsgImplementor;

    public NewAbstractSendMsgService(SendMsgImplementor sendMsgImplementor){
        this.sendMsgImplementor = sendMsgImplementor;
    }

    // 微信
    public void sendMsg(){
        this.sendMsgImplementor.sendMsg();
    }
}

定義發(fā)送消息實現(xiàn)類

/**
 * 發(fā)送消息的實現(xiàn)接口
 * @author:liyajie
 * @createTime:2022/2/21 10:35
 * @version:1.0
 */
public class NewSendMsgServiceImpl extends NewAbstractSendMsgService{

    public NewSendMsgServiceImpl(SendMsgImplementor sendMsgImplementor) {
        super(sendMsgImplementor);
    }

    @Override
    public void sendMsg() {
        super.sendMsg();
    }
}

定義發(fā)送消息統(tǒng)一接口

/**
 * 發(fā)送消息統(tǒng)一接口
 * @author:liyajie
 * @createTime:2022/2/21 10:41
 * @version:1.0
 */
public interface SendMsgImplementor {

     void sendMsg();
}

定義微信發(fā)送消息實現(xiàn)類

/**
 * 微信發(fā)送消息
 * @author:liyajie
 * @createTime:2022/2/21 10:45
 * @version:1.0
 */
public class WxImplementor implements SendMsgImplementor{
    @Override
    public void sendMsg() {
        System.out.println("老板使用微信給你發(fā)了消息,快去接收吧");
    }
}

定義QQ發(fā)送消息實現(xiàn)類

/**
 * QQ發(fā)送消息
 * @author:liyajie
 * @createTime:2022/2/21 10:45
 * @version:1.0
 */
public class QqImplementor implements SendMsgImplementor{
    @Override
    public void sendMsg() {
        System.out.println("老板使用QQ給你發(fā)了消息,快去接收吧");
    }
}

定義測試類

/**
 * 測試類
 * @author:liyajie
 * @createTime:2022/2/21 10:37
 * @version:1.0
 */
public class TestNew {
    public static void main(String[] args) {
        NewSendMsgServiceImpl newSendMsgService = new NewSendMsgServiceImpl(new QqImplementor());
        newSendMsgService.sendMsg();

        NewSendMsgServiceImpl newSendMsgService2 = new NewSendMsgServiceImpl(new WxImplementor());
        newSendMsgService2.sendMsg();
    }
}

測試結(jié)果

對比分析

方案一,即一般實現(xiàn)方式,微信和QQ兩種發(fā)送消息的方式需要同時去實現(xiàn)CommonMsg和AbstractSendMsgService兩個接口中的方法,耦合性較高;另外比如新增緊急消息的發(fā)送或者新增短信的方式發(fā)送消息的需求,改動較多,擴展性較差。

方案二,為橋接模式實現(xiàn)方式,在消息類的構(gòu)造方法中傳入接口SendMsgImplementor,從而使發(fā)送消息的抽象和具體實現(xiàn)進行了分離,實現(xiàn)了解耦;后期新增緊急消息的發(fā)送或者新增短信的方式發(fā)送消息的需求,也只需要新增緊急消息類和短信發(fā)送類即可,和QQ,微信等發(fā)送消息互不影響,擴展方便,符合開閉原則,復(fù)用原則。

總結(jié)

橋梁模式分離了抽象部分和實現(xiàn)部分,從而極大地提供了系統(tǒng)的靈活性。讓抽象部分和實現(xiàn)部分獨立出來,分別定義接口,這有助于對系統(tǒng)進行分層,從而產(chǎn)生更好的結(jié)構(gòu)化的系統(tǒng)。

橋梁模式使得抽象部分和實現(xiàn)部分可以分別獨立地擴展,而不會相互影響,從而大大提高了系統(tǒng)的可擴展性。

到此這篇關(guān)于Java設(shè)計模式之橋接模式的示例詳解的文章就介紹到這了,更多相關(guān)Java橋接模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中Object用法詳解

    Java中Object用法詳解

    Java是面向?qū)ο蟮木幊陶Z言,而在面向?qū)ο笾?,所有的Java類都有一個共同的祖先類,這就是Object,那么Object都有哪些特性呢?今天小編就簡單跟大家分析一下,感興趣的同學(xué)可以跟著小編一起學(xué)習(xí)
    2023-05-05
  • Java?C++題解leetcode1441用棧操作構(gòu)建數(shù)組示例

    Java?C++題解leetcode1441用棧操作構(gòu)建數(shù)組示例

    這篇文章主要為大家介紹了Java?C++題解leetcode1441用棧操作構(gòu)建數(shù)組示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Java案例之隨機驗證碼功能實現(xiàn)實例

    Java案例之隨機驗證碼功能實現(xiàn)實例

    本篇文章主要介紹了Java案例之隨機驗證碼功能實現(xiàn)實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 10道springboot常見面試題

    10道springboot常見面試題

    這篇文章主要為大家詳細介紹了10道springboot常見面試題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • SpringBoot+Mybatis分頁插件PageHelper實現(xiàn)分頁效果

    SpringBoot+Mybatis分頁插件PageHelper實現(xiàn)分頁效果

    這篇文章主要介紹了SpringBoot+Mybatis實現(xiàn)分頁效果,本案例是采用Mybatis分頁插件PageHelper實現(xiàn),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • java數(shù)學(xué)歸納法非遞歸求斐波那契數(shù)列的方法

    java數(shù)學(xué)歸納法非遞歸求斐波那契數(shù)列的方法

    這篇文章主要介紹了java數(shù)學(xué)歸納法非遞歸求斐波那契數(shù)列的方法,涉及java非遞歸算法的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • SpringBoot+Mybatis+Vue 實現(xiàn)商品模塊的crud操作

    SpringBoot+Mybatis+Vue 實現(xiàn)商品模塊的crud操作

    這篇文章主要介紹了SpringBoot+Mybatis+Vue 實現(xiàn)商品模塊的crud操作,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 如何使用 Spring Boot 和 Canal 實現(xiàn) MySQL 數(shù)據(jù)庫同步

    如何使用 Spring Boot 和 Canal 實現(xiàn) My

    本文介紹了如何使用SpringBoot和Canal實現(xiàn)MySQL數(shù)據(jù)庫之間的數(shù)據(jù)同步,通過配置主庫、創(chuàng)建Canal用戶、配置CanalServer以及開發(fā)SpringBoot客戶端,實現(xiàn)了將主庫的數(shù)據(jù)實時同步到多個從庫,感興趣的朋友跟隨小編一起看看吧
    2025-02-02
  • 純Java代碼實現(xiàn)流星劃過天空

    純Java代碼實現(xiàn)流星劃過天空

    本文給大家介紹純java代碼實現(xiàn)流星劃過天空,包括流星個數(shù),流星飛行的速度,色階,流星大小相關(guān)變量設(shè)置。對java流星劃過天空特效代碼感興趣的朋友可以參考下本文
    2015-10-10
  • JavaWeb中Tomcat底層機制和Servlet運行原理詳解

    JavaWeb中Tomcat底層機制和Servlet運行原理詳解

    這篇文章主要介紹了JavaWeb中Tomcat底層機制和Servlet運行原理詳解,Tomcat是一個開源的Java Web服務(wù)器,它是基于Java Servlet和JavaServer Pages(JSP)技術(shù)的,下面是關(guān)于Tomcat底層機制和Servlet運行原理的簡要說明,需要的朋友可以參考下
    2023-10-10

最新評論

抚顺县| 什邡市| 辉县市| 达尔| 庆云县| 平陆县| 达孜县| 沅江市| 鄂托克旗| 栾城县| 琼海市| 和林格尔县| 隆昌县| 白玉县| 福泉市| 丰城市| 鄄城县| 通渭县| 睢宁县| 正镶白旗| 上林县| 日土县| 山东省| 台北市| 曲阳县| 漳州市| 台中市| 黎平县| 陇西县| 阿勒泰市| 四子王旗| 阿勒泰市| 潼南县| 钟山县| 任丘市| 安塞县| 朝阳县| 龙口市| 兰州市| 涟水县| 汨罗市|