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

Java設(shè)計模式中的橋接模式

 更新時間:2022年07月19日 09:36:14   作者:愛學(xué)習(xí)的大魚???????  
這篇文章主要介紹了Java設(shè)計模式中的橋接模式,其是一種結(jié)構(gòu)型設(shè)計模式,是指將實現(xiàn)與抽象放在兩個不同的類層次中,使兩個層次可以獨立改變

模式介紹

  • 橋接模式(Bridge模式)是指:將實現(xiàn)與抽象放在兩個不同的類層次中,使兩個層次可以獨立改變。
  • 是一種結(jié)構(gòu)型設(shè)計模式。
  • Bridge模式基于類的最小設(shè)計原則,通過使用封裝、聚合及繼承等行為讓不同的類承擔(dān)不同的職責(zé)。它的主要特點是把抽象(Abstraction)與行為實現(xiàn)(Implementation)分離開來,從而可以保持各部分的獨立性以及應(yīng)對他們的功能擴展。

UML類圖

類圖說明:

  • Client類:橋接模式的調(diào)用者。
  • 抽象類(Abstraction) :維護了Implementor /即它的實現(xiàn)類Concretelmplementor…二者是聚合關(guān)系,Abstraction充當(dāng)橋接類
  • RefinedAbstraction:是Abstraction 抽象類的子類
  • Implementor: 行為實現(xiàn)類的接口
  • ConcretelmplementorA/B :行為的具體實現(xiàn)類
  • 從UML圖:這里的抽象類和接口是聚合的關(guān)系,其實調(diào)用和被調(diào)用關(guān)系

橋接模式案例

背景介紹: 客戶端通過橋接模式,根據(jù)手機功能和品牌進行相應(yīng)功能的輸出

手機品牌接口類及實現(xiàn)子類

public interface Brand {
    void open();
    void close();
    void call();
}
public class XiaoMi implements Brand {
    @Override
    public void open() {
        System.out.println("小米手機開機");
    }
    @Override
    public void close() {
        System.out.println("小米手機關(guān)機");
    }
    @Override
    public void call() {
        System.out.println("小米手機打電話");
    }
}
public class Vivo implements Brand{
    @Override
    public void open() {
        System.out.println("Vivo手機開機");
    }
    @Override
    public void close() {
        System.out.println("Vivo手機關(guān)機");
    }
    @Override
    public void call() {
        System.out.println("Vivo手機打電話");
    }
}

手機抽象類及實現(xiàn)子類

public abstract class Phone {
    private Brand brand;
    public Phone(Brand brand) {
        this.brand = brand;
    }
    protected void open(){
        this.brand.open();
    }
    protected void close(){
        this.brand.close();
    }
    protected void call() {
        this.brand.call();
    }
}
public class FoldedPhone extends Phone{

    public FoldedPhone(Brand brand) {
        super(brand);
    }
    @Override
    protected void open() {
        super.open();
        System.out.println("折疊樣式手機");
    }
    @Override
    protected void close() {
        super.close();
        System.out.println("折疊樣式手機");
    }
    @Override
    protected void call() {
        super.call();
        System.out.println("折疊樣式手機");
    }
}
public class UpRightPhone extends Phone {
    public UpRightPhone(Brand brand) {
        super(brand);
    }
    @Override
    protected void open() {
        super.open();
        System.out.println("直立樣式手機");
    }
    @Override
    protected void close() {
        super.close();
        System.out.println("直立樣式手機");
    }
    @Override
    protected void call() {
        super.call();
        System.out.println("直立樣式手機");
    }
}

客戶端

public class Client {

    public static void main(String[] args) {
        Phone foldedPhone = new FoldedPhone(new XiaoMi());
        Phone upRightPhone = new UpRightPhone(new Vivo());
        foldedPhone.close();
        foldedPhone.open();
        foldedPhone.call();
        System.out.println("===============");
        upRightPhone.close();
        upRightPhone.open();
        upRightPhone.call();
    }
}

實現(xiàn)結(jié)果:

橋接模式的注意事項和細節(jié)

  • 實現(xiàn)了抽象和實現(xiàn)部分的分離,從而極大的提供了系統(tǒng)的靈活性,讓抽象部分和實現(xiàn)部分獨立開來,這有助于系統(tǒng)進行分層設(shè)計,從而產(chǎn)生更好的結(jié)構(gòu)化系統(tǒng)。
  • 對于系統(tǒng)的高層部分,只需要知道抽象部分和實現(xiàn)部分的接口就可以了,其它的部分由具體業(yè)務(wù)來完成。
  • 橋接模式替代多層繼承方案,可以減少子類的個數(shù),降低系統(tǒng)的管理和維護成本。
  • 橋接 模式的引入增加了系統(tǒng)的理解和設(shè)計難度,由于聚合關(guān)聯(lián)關(guān)系建立在抽象層,要求開發(fā)者針對抽象進行設(shè)。
  • 橋接 模式要求正確識別出系統(tǒng)中兩個獨立變化的維度(抽象、和實現(xiàn)),因此其使用范圍有-定的局限性,即需要有這樣的應(yīng)用場景。
  • 橋接模式其它應(yīng)用場景
    對于那些不希望使用繼承或因為多層次繼承導(dǎo)致系統(tǒng)類的個數(shù)急劇增加的系統(tǒng),橋接模式尤為適用.

常見的應(yīng)用場景

  • JDBC驅(qū)動程序
  • 銀行轉(zhuǎn)賬系統(tǒng)
    轉(zhuǎn)賬分類:網(wǎng)上轉(zhuǎn)賬,柜臺轉(zhuǎn)賬,AMT轉(zhuǎn)賬
    轉(zhuǎn)賬用戶類型:普通用戶,銀卡用戶,金卡用戶…
  • 消息管理
    消息類型:即時消息,延時消息
    消息分類:手機短信,郵件消息,QQ消息…

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

相關(guān)文章

  • 圖解如何在Spring Boot中使用JSP頁面

    圖解如何在Spring Boot中使用JSP頁面

    這篇文章主要介紹了圖解如何在Spring Boot中使用JSP頁面,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • Java格式化日期和時間三種方法

    Java格式化日期和時間三種方法

    這篇文章主要給大家介紹了關(guān)于Java格式化日期和時間三種方法的相關(guān)資料,最近遇到很多在Java里獲取當(dāng)前時間的問題,文中通過圖文以及實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • 死磕 java同步系列之synchronized解析

    死磕 java同步系列之synchronized解析

    這篇文章主要介紹了Java中syncronized正確使用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-06-06
  • @SpringBootConfiguration重復(fù)加載報錯問題解決

    @SpringBootConfiguration重復(fù)加載報錯問題解決

    @SpringBootApplication?注解的?exclude?屬性用于排除特定的自動配置類,而不是用于排除主配置類本身,因此,不能通過?exclude?屬性來排除主配置類的加載,這篇文章主要介紹了@SpringBootConfiguration重復(fù)加載報錯,需要的朋友可以參考下
    2024-08-08
  • java web開發(fā)中獲取tomcat上properties文件內(nèi)容的方法

    java web開發(fā)中獲取tomcat上properties文件內(nèi)容的方法

    java web開發(fā)中如何獲取tomcat上properties文件內(nèi)容的方法,方便文件存儲位置的修改,解耦和,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 最新評論

    舟山市| 仁化县| 大化| 武隆县| 台州市| 安义县| 丹巴县| 诏安县| 儋州市| 桐梓县| 鄢陵县| 政和县| 乐都县| 竹北市| 鄂伦春自治旗| 盱眙县| 金平| 莲花县| 北票市| 石屏县| 克山县| 大化| 信宜市| 汉中市| 体育| 辽宁省| 砚山县| 黑水县| 湖口县| 无锡市| 兰溪市| 多伦县| 衡南县| 鹤山市| 敦煌市| 兖州市| 固阳县| 桐乡市| 和平县| 大余县| 丹寨县|