欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java設(shè)計(jì)模式以虹貓藍(lán)兔的故事講解橋接模式

 更新時(shí)間:2022年04月21日 16:56:40   作者:桃花鍵神  
橋接是用于把抽象化與實(shí)現(xiàn)化解耦,使二者可以獨(dú)立變化。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它通過提供抽象化和實(shí)現(xiàn)化之間的橋接結(jié)構(gòu),來實(shí)現(xiàn)二者的解耦。這種模式涉及到一個(gè)作為橋接的接口,使得實(shí)體類的功能獨(dú)立于接口實(shí)現(xiàn)類。這兩種類型的類可被結(jié)構(gòu)化改變而互不影響

模式: 橋接模式

案例: 藍(lán)兔宮主買裙子

什么是橋接模式

橋接(Bridge)模式的定義如下: 將抽象與實(shí)現(xiàn)分離,使它們可以獨(dú)立變化。它是用組合關(guān)系代替繼承關(guān)系來實(shí)現(xiàn),從而降低了抽象和實(shí)現(xiàn)這兩個(gè)可變維度的耦合度。

優(yōu)點(diǎn)

1、抽象與實(shí)現(xiàn)分離,擴(kuò)展能力強(qiáng)

2、符合開閉原則

3、符合合成復(fù)用原則

4、其實(shí)現(xiàn)細(xì)節(jié)對(duì)客戶透明

缺點(diǎn)

由于聚合關(guān)系建立在抽象層,要求開發(fā)者針對(duì)抽象化進(jìn)行設(shè)計(jì)與編程,能正確地識(shí)別出系統(tǒng)中兩個(gè)獨(dú)立變化的維度,這增加了系統(tǒng)的理解與設(shè)計(jì)難度。

知識(shí)點(diǎn)

可以將抽象化部分與實(shí)現(xiàn)化部分分開,取消二者的繼承關(guān)系,改用組合關(guān)系。

橋接模式實(shí)現(xiàn)

案例: 藍(lán)兔宮主買裙子

裙子分兩個(gè)維度,分別是顏色和樣式。

顏色有黃色和紅色;

樣式分長(zhǎng)裙和短裙;

抽象化(Abstraction)角色: 顏色

擴(kuò)展抽象化(Refined Abstraction)角色: 黃色和紅色

實(shí)現(xiàn)化(Implementor)角色: 樣式

具體實(shí)現(xiàn)化(Concrete Implementor)角色: 長(zhǎng)裙和短裙

顏色

顏色接口,聲明一個(gè)show()抽象方法

public interface Color {
    void show();
}

黃色

黃色類并實(shí)現(xiàn)顏色接口

public class ColorYellow implements Color {
    @Override
    public void show() {
        System.out.println("黃色的");
    }
}

紅色

紅色類并實(shí)現(xiàn)顏色接口

public class ColorRed implements Color {
    @Override
    public void show() {
        System.out.println("紅色的");
    }
}

裙子

裙子類,聲明一個(gè)顏色屬性和一個(gè)抽象方法

abstract class Qun {
    protected Color color;
    protected Qun() {
    }
    protected Qun(Color color) {
        this.color = color;
    }
    public abstract void shows();
}

長(zhǎng)裙

繼承裙子類,并實(shí)現(xiàn)抽象方法

public class QunChang extends Qun {
    protected QunChang() {
    }
    protected QunChang(Color color) {
        super(color);
    }
    @Override
    public void shows() {
        System.out.println("長(zhǎng)裙");
        color.show();
    }
}

短裙

繼承裙子類,并實(shí)現(xiàn)抽象方法

public class QunDuan extends Qun {
    protected QunDuan() {
    }
    protected QunDuan(Color color) {
        super(color);
    }
    @Override
    public void shows() {
        System.out.println("短裙");
        color.show();
    }
}

測(cè)試

new一個(gè)紅色對(duì)象作為參數(shù)傳給長(zhǎng)裙。

public class Demo {
    public static void main(String[] args) {
        Color color = new ColorRed();
        Qun qun = new QunChang(color);
        qun.shows();
    }
}

總結(jié)

當(dāng)一個(gè)類內(nèi)部具備兩種或多種變化維度時(shí),使用橋接模式可以解耦這些變化的維度,使高層代碼架構(gòu)穩(wěn)定。

到此這篇關(guān)于Java設(shè)計(jì)模式以虹貓藍(lán)兔的故事講解橋接模式的文章就介紹到這了,更多相關(guān)Java橋接模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • javaweb判斷當(dāng)前請(qǐng)求是否為移動(dòng)設(shè)備訪問的方法

    javaweb判斷當(dāng)前請(qǐng)求是否為移動(dòng)設(shè)備訪問的方法

    這篇文章主要為大家詳細(xì)介紹了javaweb判斷當(dāng)前請(qǐng)求是否為移動(dòng)設(shè)備訪問的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 淺析Java中并發(fā)工具類的使用

    淺析Java中并發(fā)工具類的使用

    在JDK的并發(fā)包里提供了幾個(gè)非常有用的并發(fā)工具類。CountDownLatch、CyclicBarrier和Semaphore工具類提供了一種并發(fā)流程控制的手段,Exchanger工具類提供了在線程間交換數(shù)據(jù)的一種方法。本文主要介紹了它們的使用,需要的可以參考一下
    2022-12-12
  • Intellij搭建springmvc常見問題解決方案

    Intellij搭建springmvc常見問題解決方案

    這篇文章主要介紹了Intellij搭建springmvc常見問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • java防盜鏈在報(bào)表中的應(yīng)用實(shí)例(推薦)

    java防盜鏈在報(bào)表中的應(yīng)用實(shí)例(推薦)

    下面小編就為大家?guī)硪黄猨ava防盜鏈在報(bào)表中的應(yīng)用實(shí)例(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • Java中的關(guān)鍵字_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java中的關(guān)鍵字_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    關(guān)鍵字也稱為保留字,是指Java語言中規(guī)定了特定含義的標(biāo)示符。對(duì)于保留字,用戶只能按照系統(tǒng)規(guī)定的方式使用,不能自行定義
    2017-04-04
  • JAVA中的OutputStreamWriter流解析

    JAVA中的OutputStreamWriter流解析

    這篇文章主要介紹了JAVA中的OutputStreamWriter流解析,OutputStreamWriter提供了一種方便的方式將字符數(shù)據(jù)寫入到輸出流中,并進(jìn)行字符編碼轉(zhuǎn)換,它是Java中處理字符流和字節(jié)流之間轉(zhuǎn)換的重要工具之一,需要的朋友可以參考下
    2023-10-10
  • Kotlin基礎(chǔ)教程之?dāng)?shù)據(jù)類型

    Kotlin基礎(chǔ)教程之?dāng)?shù)據(jù)類型

    這篇文章主要介紹了Kotlin基礎(chǔ)教程之?dāng)?shù)據(jù)類型的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 解決SpringBoot框架因post數(shù)據(jù)量過大沒反應(yīng)問題(踩坑)

    解決SpringBoot框架因post數(shù)據(jù)量過大沒反應(yīng)問題(踩坑)

    這篇文章主要介紹了解決SpringBoot框架因post數(shù)據(jù)量過大沒反應(yīng)問題(踩坑),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • SpringMVC攔截器運(yùn)行原理及配置詳解

    SpringMVC攔截器運(yùn)行原理及配置詳解

    這篇文章主要介紹了SpringMVC攔截器運(yùn)行原理及配置詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java?Ribbon與openfeign區(qū)別和用法講解

    Java?Ribbon與openfeign區(qū)別和用法講解

    Ribbon是基于Netflix?Ribbon實(shí)現(xiàn)的一套客戶端負(fù)載均衡的工具,主要功能是提供客戶端的軟件負(fù)載均衡算法和服務(wù)調(diào)用。openfeign對(duì)Feign進(jìn)行了增強(qiáng),使其支持Spring MVC注解,另外還整合了Ribbon和Nacos,從而使得Feign的使用更加方便
    2022-08-08

最新評(píng)論