一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 23種設計模式(9) java橋接模式

23種設計模式(9) java橋接模式

2021-02-02 11:20靜默虛空 Java教程

這篇文章主要為大家詳細介紹了java設計模式之橋接模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下

介紹

橋接模式 (Bridge)將抽象部分與實現部分分離,使它們都可以獨立的變化。
橋接模式是一種結構式模式。

結構

23種設計模式(9) java橋接模式

代碼實現

Implementor : 定義實現接口。

java" id="highlighter_837974">
?
1
2
3
4
interface Implementor {
  // 實現抽象部分需要的某些具體功能
  public void operationImpl();
}

Abstraction : 定義抽象接口。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
abstract class Abstraction {
  // 持有一個 Implementor 對象,形成聚合關系
  protected Implementor implementor;
  
  public Abstraction(Implementor implementor) {
    this.implementor = implementor;
  }
  
  // 可能需要轉調實現部分的具體實現
  public void operation() {
    implementor.operationImpl();
  }
}

ConcreteImplementor :  實現 Implementor 中定義的接口。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class ConcreteImplementorA implements Implementor {
  @Override
  public void operationImpl() {
    // 真正的實現
    System.out.println("具體實現A");
  
}
 
class ConcreteImplementorB implements Implementor {
  @Override
  public void operationImpl() {
    // 真正的實現
    System.out.println("具體實現B");
  
}

RefinedAbstraction : 擴展 Abstraction 類。

?
1
2
3
4
5
6
7
8
9
10
11
12
class RefinedAbstraction extends Abstraction {
 
  public RefinedAbstraction(Implementor implementor) {
    super(implementor);
  }
  
  public void otherOperation() {
    // 實現一定的功能,可能會使用具體實現部分的實現方法,
    // 但是本方法更大的可能是使用 Abstraction 中定義的方法,
    // 通過組合使用 Abstraction 中定義的方法來完成更多的功能。
  }
}

測試代碼

?
1
2
3
4
5
6
7
8
public class BridgePattern {
  public static void main(String[] args) {
    Implementor implementor = new ConcreteImplementorA();
    RefinedAbstraction abstraction = new RefinedAbstraction(implementor);
    abstraction.operation();
    abstraction.otherOperation();
  }
}

運行結果

具體實現A
其他操作

應用場景

1、如果你不希望在抽象和實現部分采用固定的綁定關系,可以采用橋接模式,來把抽象和實現部分分開,
然后在程序運行期間來動態的設置抽象部分需要用到的具體的實現,還可以動態切換具體的實現。

2、如果出現抽象部分和實現部分都應該可以擴展的情況,可以采用橋接模式,讓抽象部分和實現部分可以
獨立的變化,從而可以靈活的進行單獨擴展,而不是攪在一起,擴展一邊會影響到另一邊。

3、如果希望實現部分的修改,不會對客戶產生影響,可以采用橋接模式,客戶是面向抽象的接口在運行,
實現部分的修改,可以獨立于抽象部分,也就不會對客戶產生影響了,也可以說對客戶是透明的。

4、如果采用繼承的實現方案,會導致產生很多子類,對于這種情況,可以考慮采用橋接模式,分析功能變化的原因,看看是否能分離成不同的緯度,然后通過橋接模式來分離它們,從而減少子類的數目。

要點

如果一個系統需要在構件的抽象化角色和具體化角色之間增加更多的靈活性,避免在兩個層次之間建立靜態的聯系。
抽象化角色和具體化角色都應該可以被子類擴展。在這種情況下,橋接模式可以靈活地組合不同的抽象化角色和具體化角色,并獨立化地擴展。
設計要求實現化角色的任何改變不應當影響客戶端,或者說實現化角色的改變對客戶端是完全透明的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/jingmoxukong/p/4224661.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 美女张开腿让男人桶的 视频 | 香蕉91 | 四虎新网址 | 91精品国产91热久久久久福利 | 免费看一级毛片 | 韩国甜性涩爱免费观看 | 涩涩屋在线播放 | free性泰国女人hd | 湿好紧太硬了我太爽了 | www.4虎影院 w7w7w7w7w免费 | 私人影院免费 | 日韩免费在线观看 | a∨在线观看 | 色老板在线视频观看 | 久久亚洲精选 | 交换年轻夫妇HD中文字幕 | 九九热在线视频 | 麻豆在线传煤 | 国产伦精品一区二区三区免费观看 | 青草视频免费 | 国产亚洲精品美女2020久久 | 欧美在线观看一区二区三 | 高清在线观看免费 | 国产90后美女露脸在线观看 | 日本人护士免费xxxx视频 | 久青草国产97香蕉在线视频 | jj视频免费观看 | 亚洲一区二区三区在线播放 | 免费精品一区二区三区在线观看 | 放荡警察巨r麻麻出轨小说 范冰冰特黄xx大片 饭冈加奈子在线播放观看 法国老妇性xx在线播放 | 青柠影视在线播放观看高清 | 国产一区二区免费福利片 | 污文啊好棒棒啊好了 | 免费理伦片手机在线播放 | 国产一区二区三区四区波多野结衣 | 亚洲精品在线播放 | 亚洲欧美日韩高清 | 亚洲午夜小视频 | 国产图色 | 香蕉在线精品一区二区 | 日本道色综合久久影院 |