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

Java  中橋接模式——對象結(jié)構(gòu)型模式的實(shí)例詳解

 更新時(shí)間:2017年09月09日 11:16:34   作者:blueberry_mu  
這篇文章主要介紹了Java 中橋接模式——對象結(jié)構(gòu)型模式的實(shí)例詳解的相關(guān)資料,希望通過本文大家能掌握這部分知識,需要的朋友可以參考下

Java  中橋接模式——對象結(jié)構(gòu)型模式的實(shí)例詳解

一、意圖

將抽象部分與它的實(shí)現(xiàn)部分分離,使他們都可以獨(dú)立的變化。

二、適用性

以下一些情況使用Bridge模式

你不希望在抽象和它的實(shí)現(xiàn)部分之間有一個(gè)固定的綁定關(guān)系。例如這種情況可能因?yàn)?,在程序運(yùn)行時(shí)刻實(shí)現(xiàn)部分應(yīng)可以被選擇或者切換。

類的抽象以及它的實(shí)現(xiàn)都應(yīng)該可以通過生成子類的方法加以擴(kuò)充。這時(shí)Bridge模式使你可以對不同的抽象接口和實(shí)現(xiàn)部分進(jìn)行組合,并分別對他們進(jìn)行擴(kuò)充。

對一個(gè)抽象的實(shí)現(xiàn)部分的修改應(yīng)對客戶不產(chǎn)生影響,即客戶代碼不必重新編譯。

(C++)你想對客戶完全隱藏抽象的實(shí)現(xiàn)部分。在C++中,類的表示在類接口中是可見的。

三、結(jié)構(gòu)

四、代碼

public interface Implementor {
 /**
  * 實(shí)現(xiàn)抽象部分的具體方法
  */
 public void operationImpl();
}
public class ConcreteImplementorA implements Implementor {
 @Override
 public void operationImpl() {
  System.out.println("ConcreteImplementorA");
 }
}
public class ConcreteImplementorB implements Implementor {
 @Override
 public void operationImpl() {
  System.out.println("ConcreteImplementorB");
 }
}
public abstract class Abstraction {
 private Implementor mImplementor;

 /**
  * 通過實(shí)現(xiàn)部分對象的引用構(gòu)造抽象部分的對象
  *
  * @param implementor 實(shí)現(xiàn)部分對象的引用
  */
 public Abstraction(Implementor implementor){
  mImplementor = implementor;
 }

 public void operation(){
  mImplementor.operationImpl();
 }
}

public class RefinedAbstraction extends Abstraction {

 /**
  * 通過實(shí)現(xiàn)部分對象的引用構(gòu)造抽象部分的對象
  *
  * @param implementor 實(shí)現(xiàn)部分對象的引用
  */
 public RefinedAbstraction(Implementor implementor) {
  super(implementor);
 }

 public void refinedOperation(){
  //對 Abstraction中的方法進(jìn)行擴(kuò)展。

  System.out.println("refinedOperation");
  operation();
 }
}

public class Client {

 public static void main(String[] args){
  Abstraction abstraction = new RefinedAbstraction(new ConcreteImplementorA());
  abstraction.operation();
 }
}

如有疑問請留言或者到本站這區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • mybatis spring配置SqlSessionTemplate的使用方式

    mybatis spring配置SqlSessionTemplate的使用方式

    這篇文章主要介紹了mybatis spring配置SqlSessionTemplate的使用方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 使用Maven配置Spring的方法步驟

    使用Maven配置Spring的方法步驟

    這篇文章主要介紹了使用Maven配置Spring的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-04-04
  • 基于Lombok集成springboot遇到的坑

    基于Lombok集成springboot遇到的坑

    這篇文章主要介紹了Lombok集成springboot遇到的坑,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • javaweb購物車案列學(xué)習(xí)開發(fā)

    javaweb購物車案列學(xué)習(xí)開發(fā)

    這篇文章主要為大家詳細(xì)介紹了javaweb購物車案列學(xué)習(xí)開發(fā)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • IDEA關(guān)于.properties資源文件的編碼調(diào)整問題

    IDEA關(guān)于.properties資源文件的編碼調(diào)整問題

    這篇文章主要介紹了IDEA關(guān)于.properties資源文件的編碼調(diào)整問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Java基礎(chǔ)之ClassLoader詳解

    Java基礎(chǔ)之ClassLoader詳解

    這篇文章主要介紹了Java基礎(chǔ)之ClassLoader詳解,文中對ClassLoader有非常詳細(xì)的解說,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • @Transactional解讀(作用、失效場景與解決方式)

    @Transactional解讀(作用、失效場景與解決方式)

    這篇文章主要介紹了關(guān)于@Transactional作用、失效場景與解決方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Logger.error打印錯(cuò)誤異常的詳細(xì)堆棧信息

    Logger.error打印錯(cuò)誤異常的詳細(xì)堆棧信息

    這篇文章主要介紹了Logger.error打印錯(cuò)誤異常的詳細(xì)堆棧信息,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Java中的模板模式說明與實(shí)現(xiàn)

    Java中的模板模式說明與實(shí)現(xiàn)

    這篇文章主要介紹了Java中的模板模式說明與實(shí)現(xiàn),模板方法模式,又叫模板模式,在一個(gè)抽象類公開定義了執(zhí)行它的方法的模板,它的子類可以更需要重寫方法實(shí)現(xiàn),但可以成為典型類中定義的方式進(jìn)行,需要的朋友可以參考下
    2023-10-10
  • Java線程池流程編排運(yùn)用實(shí)戰(zhàn)源碼

    Java線程池流程編排運(yùn)用實(shí)戰(zhàn)源碼

    這篇文章主要介紹了Java線程池流程編排運(yùn)用實(shí)戰(zhàn)源碼,就在流程引擎的基礎(chǔ)上運(yùn)用?ThreadPoolExecutor,使用線程池實(shí)現(xiàn)?SpringBean?的異步執(zhí)行
    2022-03-03

最新評論