Java描述設計模式(08):橋接模式
本文原始碼:GitHub·點這裡 || GitEE·點這裡
一、橋接模式簡介
1、基礎描述
橋樑模式是物件的結構模式。又稱為柄體(Handle and Body)模式或介面(Interface)模式。橋樑模式的用意是“將抽象化(Abstraction)與實現化(Implementation)脫耦,使得二者可以獨立地變化”。
2、場景問題描述
1)、場景分析
在一個複雜的系統中,訊息通知是一個必備模組,一般封裝方式主要從下面兩個方式入手:
- 訊息型別
使用者端訊息(user-client)
管理端訊息(system-client)
- 訊息接收
郵件傳送(email) 簡訊傳送(msg)
2)、場景圖解
3)、原始碼實現
/** * 橋接模式場景應用 */ public class C01_InScene { public static void main(String[] args) { // 建立具體的實現物件 MsgImplementor implementor = new SendBySMS() ; // 建立普通的訊息物件 AbstractMsg abstractMessage = new UserMsg(implementor); abstractMessage.sendMessage("您的賬戶異地登陸", "使用者A0001"); // 切換為郵件方式且加急處理 implementor = new SendByEmail() ; abstractMessage = new AdminMsg(implementor); abstractMessage.sendMessage("專案上線通知", "運維S0001"); } } /** * 封裝訊息型別 */ abstract class AbstractMsg { // 持有一個實現部分的物件 MsgImplementor impl ; public AbstractMsg (MsgImplementor impl){ this.impl = impl ; } /** * 傳送訊息,委派給實現部分的方法 * @param message 要傳送訊息的內容 * @param toUser 訊息的接受者 */ public void sendMessage (String message, String toUser){ this.impl.send(message, toUser); } } class AdminMsg extends AbstractMsg{ public AdminMsg(MsgImplementor impl) { super(impl); } @Override public void sendMessage(String message, String toUser) { message = "辛苦的管理員:"+message; super.sendMessage(message, toUser); } } class UserMsg extends AbstractMsg{ public UserMsg(MsgImplementor impl) { super(impl); } @Override public void sendMessage(String message, String toUser) { message = "尊敬的使用者:" + message ; super.sendMessage(message, toUser); } } /** * 封裝訊息傳送 */ interface MsgImplementor { void send (String message , String toUser) ; } class SendBySMS implements MsgImplementor{ @Override public void send(String message, String toUser) { System.out.println("簡訊通知:"+toUser+";內容:"+message); } } class SendByEmail implements MsgImplementor{ @Override public void send(String message, String toUser) { System.out.println("郵件通知:"+toUser+";內容:"+message); } }
二、橋接模式
1、模式圖解
2、核心角色
- 抽象化(Abstraction)角色
抽象化給出的定義,並儲存一個對實現化物件的引用。
- 修正抽象化(RefinedAbstraction)角色
擴充套件抽象化角色,改變修正父類對抽象化的定義。
- 實現化(Implementor)角色
這個角色給出實現化角色的介面,但不給出具體的實現。
- 具體實現化(ConcreteImplementor)角色
這個角色給出實現化角色介面的具體實現。
3、原始碼封裝
abstract class Abstraction { private Implementor implementor ; public Abstraction (Implementor implementor){ this.implementor = implementor ; } // 例項方法 public void operation (){ implementor.operationImpl(); } } class RefinedAbstraction extends Abstraction{ public RefinedAbstraction(Implementor implementor) { super(implementor); } //其他的操作方法 public void otherOperation(){ } } abstract class Implementor { // 示例方法,實現抽象部分需要的某些具體功能 public abstract void operationImpl () ; } class ConcreteImplementorA extends Implementor{ @Override public void operationImpl() { System.out.println("ConcreteImplementorA.operationImpl()"); } } class ConcreteImplementorB extends Implementor{ @Override public void operationImpl() { System.out.println("ConcreteImplementorB.operationImpl()"); } }
三、Java應用場景
橋樑模式在Java應用中的一個非常典型的例子就是JDBC驅動器。抽象API可以對各種資料庫引擎發出SQL指令,並不直接與資料庫引擎互動,JDBC驅動器負責這個底層的工作。
JDBC的這種架構,把抽象部分和具體部分分離開來,從而使得抽象部分和具體部分都可以獨立地擴充套件。
四、原始碼地址
GitHub·地址
https://github.com/cicadasmile/model-arithmetic-parent
GitEE·地址
https://gitee.com/cicadasmile/model-arithmetic-parent
相關推薦
Java描述設計模式(08):橋接模式
本文原始碼:GitHub·點這裡 || GitEE·點這裡 一、橋接模式簡介 1、基礎描述 橋樑模式是物件的結構模式。又稱為柄
Java設計模式9:橋接模式
一、橋接模式: 橋接模式是用於把抽象化與實現化解耦,使得二者可以獨立變化。這種型別的設計模式屬於結構型模式,它通過提供抽象化和實現化之間的橋接結構,來實現二者的解耦。 二、示例程式碼: 先來考慮下如下場景: 傳送訊息功能。基本上所有帶業務流程處理的系統都會有這樣的功能,比如OA上
java常用設計模式九:橋接模式
this 橋接 abstract pub image sys cli 分享圖片 有一個 一、概述 將抽象部分與它的實現部分分離,使它們都可以獨立地變化。它是一種對象結構型模式。比如存在2個維度,第一個維度有一個抽象類A和對應的子類A1和A2;第二個維度有另一個
C#設計模式系列:橋接模式(Bridge)
span -i 原來 派生 引用 分享圖片 on() 版本 nta 1.1定義 當一個抽象可能有多個實現時,通常用繼承來進行協調。抽象類定義對該抽象的接口,而具體的子類則用不同的方式加以實現。繼承機制將抽象部分與它的實現部分固定在一起,使得難以對抽象部分和實現部分獨立地進行
JAVA設計模式(7):橋接模式
橋接模式將定義與其實現分離。 它是一種結構模式。 橋接(Bridge)模式涉及充當橋接的介面。橋接使得具體類與介面實現者類無關。 這兩種型別的類可以改變但不會影響對方。當需要將抽象與其實現去耦合時使用橋接解耦(分離),使得兩者可以獨立地變化。這種型別的設計模式屬於結構模式,因為此模式通過在它
設計模式之十八:橋接模式(Bridge)
ora 它的 pla sin string src ams down ng- 橋接模式: 將抽象部分和它的實現部分相分離開來,以使它們能夠單獨地變化。 UML圖: 主要包含: Abstraction:定義了抽象部分的接口。操作一個實現部分對
Java設計模式學習記錄-橋接模式
www 方便 就是 奔騰 一個 splay public face mage 前言 這次介紹結構型設計模式中的第二種模式,橋接模式。 使用橋接模式的目的就是為了解耦,松散的耦合更利於擴展,但是會增加相應的代碼量和設計難度。 橋接模式 橋接模式是為了將抽象化與實現
路一步步走>> 設計模式七:橋接-Bridge
理解的不是很深 。用到在看。 package com.test.DPs.JieGou.Bridge; /** * 結構型:Bridge-橋接 橋接:作用面為 物件 * * 用途:將抽象部分與它的實現部分分離,使它們都可以獨立的變化。 */ interface DrawA
設計模式(七):橋接模式
優點: ① 分離抽象介面及其實現部分。提高了比繼承更好的解決方案。 ② 橋接模式提高了系統的可擴充性,在兩個變化維度中任意擴充套件一個維度,都不需要修改原有系統。 缺點: ① 橋接模式的引入會增加系統的理解與設計難度,由於聚合關聯關係建立在抽象層,要求開發
設計模式:橋接模式及程式碼示例、橋接模式在jdbc中的體現、注意事項
# 0、背景 加入一個手機分為多種款式,不同款式分為不同品牌。這些詳細分類下分別進行操作。 如果傳統做法,需要將手機,分為不同的子類,再繼續分,基本屬於一個龐大的多叉樹,然後每個葉子節點進行相同名稱、但是細節不同的功能實現。 **問題**: 1. **類爆炸**:類的增加基本沒有任何優
設計模式學習筆記-橋接模式
學習 write images 基礎 abs 分離 對象 bsp uml 一、概述 將抽象部分與它的實現部分分離,使它們都可以獨立地變化。 二、模式中的角色 Abstraction:定義抽象類的接口;維護一個指向Implementor類型對象的指針;
C#設計模式之八橋接模式(Bridge)【結構型】
升級 方向 implement 詳細 .cn mage names 這樣的 意圖 一、引言 今天我們要講【結構型】設計模式的第二個模式,該模式是【橋接模式】,也有叫【橋模式】的。大家第一次看到這個名稱會想到什麽呢?我第一次看到這個模式根據名稱猜肯定是連接什麽東西的。因為
Linux:橋接模式、NAT模式下不能ping通百度
最近在搞Hadoop的時候,突然間想到要用網路,然後按照傳統的方式進行橋接方式、NAT方式進行配置網路,很尷尬的是用ping命令在終端下內網外網都是能ping通的,到了ping百度,就不行了!!!!! ping完就停在這裡了 真的是很無奈啊!? 本來以為是因為校園網有限制,但是用手機的熱
結構型:橋接模式及相關應用
文章目錄 橋接(Bridge) 優缺點 應用場景 JDBC的應用 參考資料 橋接(Bridge) 將抽象部分與它的具體實現部分分離,使它們都可以獨立地變化。 通過組合的方式建立兩個類之間
弄透VMware虛擬機器的網路設定三大模式:橋接模式,主機模式、NAT模式
前言:我們在使用的虛擬機器的時候,總會碰到很多網路設定相關的東西。我在深受其害之後,苦心專研之後,決定統一整理下虛擬機器網路設定的三大模式: 1,橋接模式:你的虛擬機器能夠上網能夠訪問你的主機,網路上其他計算機和自己的計算機都能訪問到你的虛擬機器。 2,主機模式:顧
設計模式學習(橋接模式)
一.設計意圖: 將抽象部分與它的實現部分分離,將他們都可以獨立地變化。 手機有很多牌子且在不斷變換,但是App應用也會不斷增多。所以程式要讓抽象部分(手機)與實現部分(App)分類,獨自變換。我們就已這個例子來介紹橋接模式。 二.例子:
VM-003 VMmare 在實踐中深入理解VMware虛擬機器的上網模式:橋接模式
0.說明 本篇博文為《在實踐中深入理解VMware虛擬機器的上網模式》系列的其中一篇:NAT模式。 有關於深入理解VMware虛擬機器的上網模式的意義,可以參考本系列博文的另一篇《在實踐中深入理解VMware虛擬機器的上網模式:NAT模式》中的說明部分,這裡不再展開說明。 本博文的撰寫方式還
07:橋接模式——C++實現
目錄 一、介紹 二、應用場景 三、要點 四、樣例 五、優缺點 六、和介面卡模式異同 一、介紹 橋接(Bridge)是用於把抽象化與實現化解耦,使得二者可以獨立變化。這種型別的設計模式屬於結構型模式,它通過提供抽象化和實現化之間的橋接結構
設計模式-結構型- 橋接模式(Bridge)
定義 將抽象部分與它的實現部分分享,使它們都可以獨立地變化 角色 抽象角色(Abstraction):定義了抽象類的介面而且維護著一個指向實現角色的引用 具體抽象角色(RefinedAbstr
遊戲中的設計模式四(橋接模式)
寫在前面在遊戲中的角色和武器,往往一個角色可以裝換多種武器,武器也擁有諸多型別當角色需要配備不同武器時候,需要修改角色類,使其配備另外的武器物件這樣造成物件與物件之間耦合性高,並且不容易擴充套件使用橋接模式,將抽象與實現分離,使它們都可以獨立地變化案例分析在各個幫派角色中,可