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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜爽喷水无码成人18禁三级 | 美式禁忌在线 | 日韩一级精品视频在线观看 | 国产自一区 | 性xxxx18学生第一次出血 | 婷婷福利 | 国产大神91一区二区三区 | 国产精品久线观看视频 | 久久精品视在线观看85 | 国产成人免费在线视频 | 亚飞与亚基国语1080p在线观看 | 日本加勒比在线精品视频 | 二次元美女脱裤子让男人桶爽 | 国产va免费精品高清在线观看 | chinaspanking调教 chanelpreston欧美网站 | 毛片在线免费观看网站 | 青草青青在线 | 4虎影院在线观看 | 日韩免费一区 | 日本高清视频在线观看 | 狠狠干狠狠插 | 精品国产成a人在线观看 | 亚洲免费一 | 狠狠插入 | 无码专区aaaaaa免费视频 | 日韩欧美一区黑人vs日本人 | 好大好硬好深好爽gif图 | 色戒完整版2小时38分钟 | 美女国内精品自产拍在线播放 | 亚洲成A人片在线观看中文L | 国内免费高清视频在线观看 | 色综合精品 | 美女扒开腿让男生桶爽漫画 | 丰满在线观看 | 91理论片午午伦夜理片久久 | 久久全国免费观看视频 | 日韩精品视频美在线精品视频 | 91短视频在线免费观看 | 日本a在线天堂 | 双性人bbww欧美双性 | 成人网视频免费播放 |