成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

什么是橋接模式?你可能還不知道

開發 前端
用于系統的初步設計,對于存在兩個獨立變化維度的類可以將其分為抽象化和實現化兩個角色,使它們可以分別進行變化。
  •  1. 橋接模式概述
  • 2. 橋接模式的結構與實現
  • 3. 橋接模式的應用實例
  • 4. 橋接模式與適配器模式的聯用
  • 5. 橋接模式的優缺點與適用環境

“Github:https://github.com/nateshao/design-demo/tree/main/JavaDesignPatterns/10-bridge

1. 橋接模式概述

定義

“橋接模式:將抽象部分與它的實現部分解耦,使得兩者都能夠獨立變化。

對象結構型模式

  • 又被稱為柄體(Handle and Body)模式或接口(Interface)模式
  • 用抽象關聯取代了傳統的多層繼承
  • 將類之間的靜態繼承關系轉換為動態的對象組合關系

橋接模式的結構

橋接模式包含以下4個角色:

  • Abstraction(抽象類)
  • RefinedAbstraction(擴充抽象類)
  • Implementor(實現類接口)
  • ConcreteImplementor(具體實現類)

2. 橋接模式的結構與實現

典型的實現類接口代碼:

  1. public interface Implementor { 
  2.     public void operationImpl(); 

典型的具體實現類代碼:

  1. public class ConcreteImplementor implements Implementor { 
  2.     public void operationImpl() { 
  3.         //具體業務方法的實現 
  4.     } 

典型的具體實現類代碼:

  1. public abstract class Abstraction { 
  2.     protected Implementor impl; //定義實現類接口對象 
  3.   
  4.     public void setImpl(Implementor impl) { 
  5.         this.impl=impl; 
  6.     } 
  7.   
  8.     public abstract void operation(); //聲明抽象業務方法 

典型的 擴充抽象類(細化抽象類) 代碼:

  1. public class RefinedAbstraction extends Abstraction { 
  2.     public void operation() { 
  3.         //業務代碼 
  4.         impl.operationImpl(); //調用實現類的方法 
  5.         //業務代碼 
  6.     } 

3. 橋接模式的應用實例

“實例說明:某軟件公司要開發一個跨平臺圖像瀏覽系統,要求該系統能夠顯示BMP、JPG、GIF、PNG等多種格式的文件,并且能夠在Windows、Linux、UNIX等多個操作系統上運行。系統首先將各種格式的文件解析為像素矩陣(Matrix),然后將像素矩陣顯示在屏幕上,在不同的操作系統中可以調用不同的繪制函數來繪制像素矩陣。另外,系統需具有較好的擴展性,以便在將來支持新的文件格式和操作系統。試使用橋接模式設計該跨平臺圖像瀏覽系統。

實例類圖:

跨平臺圖像瀏覽系統結構圖

實例代碼

  • Matrix:像素矩陣類,輔助類
  • ImageImp:抽象操作系統實現類,充當實現類接口
  • WindowsImp:Windows操作系統實現類,充當具體實現類
  • LinuxImp:Linux操作系統實現類,充當具體實現類
  • UnixImp:UNIX操作系統實現類,充當具體實現類
  • Image:抽象圖像類,充當抽象類
  • JPGImage:JPG格式圖像類,充當擴充抽象類
  • PNGImage:PNG格式圖像類,充當擴充抽象類
  • BMPImage:BMP格式圖像類,充當擴充抽象類
  • GIFImage:GIF格式圖像類,充當擴充抽象類
  • Client:客戶端測試類

“結果及分析:如果需要更換圖像文件格式或者更換操作系統,只需修改配置文件即可

  1. <?xml version="1.0"?> 
  2. <config> 
  3.     <!--RefinedAbstraction--> 
  4.     <className>designpatterns.bridge.JPGImage</className>  
  5.     <!--ConcreteImplementor--> 
  6.     <className>designpatterns.bridge.WindowsImp</className> 
  7. </config> 

4. 橋接模式與適配器模式的聯用

橋接模式:用于系統的初步設計,對于存在兩個獨立變化維度的類可以將其分為抽象化和實現化兩個角色,使它們可以分別進行變化

適配器模式:當發現系統與已有類無法協同工作時

橋接模式與適配器模式聯用示意圖

5. 橋接模式的優缺點與適用環境

模式優點

  • 分離抽象接口及其實現部分
  • 可以取代多層繼承方案,極大地減少了子類的個數
  • 提高了系統的可擴展性,在兩個變化維度中任意擴展一個維度,不需要修改原有系統,符合開閉原則

模式缺點

  • 會增加系統的理解與設計難度,由于關聯關系建立在抽象層,要求開發者一開始就針對抽象層進行設計與編程
  • 正確識別出系統中兩個獨立變化的維度并不是一件容易的事情

模式適用環境

需要在抽象化和具體化之間增加更多的靈活性,避免在兩個層次之間建立靜態的繼承關系

抽象部分和實現部分可以以繼承的方式獨立擴展而互不影響

一個類存在兩個(或多個)獨立變化的維度,且這兩個(或多個)維度都需要獨立地進行擴展

不希望使用繼承或因為多層繼承導致系統類的個數急劇增加的系統

 

責任編輯:武曉燕 來源: 程序員千羽
相關推薦

2022-05-05 12:02:45

SCSS函數開發

2020-12-14 07:51:16

JS 技巧虛值

2016-07-22 17:55:07

云計算

2020-10-28 08:06:09

Vue3框架數據

2015-07-13 08:49:54

2021-03-18 14:02:56

iOS蘋果細節

2025-02-27 08:33:13

2012-11-23 10:57:44

Shell

2010-03-12 09:15:28

Firefox新功能

2023-04-09 23:37:31

JavaScript開發

2023-02-27 09:20:24

絕對定位CSS

2023-01-29 09:46:47

Dialog彈窗模態

2020-06-03 08:53:40

CSS偽類 JS

2018-09-02 15:43:56

Python代碼編程語言

2022-07-17 06:53:24

微服務架構

2015-08-13 09:03:14

調試技巧

2019-11-20 10:25:06

sudoLinux

2020-01-29 19:40:36

Python美好,一直在身邊Line

2021-01-05 11:22:58

Python字符串代碼

2017-10-16 13:30:28

windows 10技巧輸入法
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲欧美在线视频 | 午夜影院在线观看 | 91国产视频在线观看 | 亚洲三区在线 | a级黄色网| 农村妇女毛片精品久久久 | 99精品国产一区二区青青牛奶 | 欧美精品一区二区三区在线播放 | 久久最新 | 欧美久久一区二区 | 成年人在线播放 | 黄色一级片aaa | 91欧美精品成人综合在线观看 | 日韩精品一区二区三区中文在线 | 国产精品视频网 | 欧美一级久久 | 中文字幕 在线观看 | 99久久99| 日本网站在线看 | 亚洲一区二区三区四区在线观看 | 亚洲免费观看视频网站 | 精品免费| 人人插人人 | 成人午夜在线观看 | 99精品视频一区二区三区 | 女同久久另类99精品国产 | 久久精品小视频 | 日韩最新网站 | 一区二区三区在线免费观看视频 | 国产色黄 | 中文字幕亚洲专区 | 日韩三片| 高清人人天天夜夜曰狠狠狠狠 | 欧美日韩成人在线观看 | 中文字幕在线视频观看 | 精品久久久久久亚洲精品 | 久久精品国产久精国产 | 午夜精品导航 | 国产乱码精品1区2区3区 | 天天舔天天 | 成人免费小视频 |