【設計模式】Java設計模式 - 橋接模式
目錄?? 不斷學習才是王道
?? 繼續踏上學習之路,學之分享筆記
?? 總有一天我也能像各位大佬一樣
??原創作品,更多關注我CSDN: 一個有夢有戲的人
??準備將博客園、CSDN一起記錄分享自己的學習心得!!!
??分享學習心得,歡迎指正,大家一起學習成長!
- 【設計模式】Java設計模式 - 橋接模式
- 簡介
- 橋接模式實體
- 代碼示例
- ①、品牌介面
- ②、汽車品牌
- ③、抽象汽車類
- ④、汽車型別子類
- ⑤、橋接模式測驗

簡介
橋接(Bridge)是用于把抽象化與實作化解耦,使得二者可以獨立變化,這種型別的設計模式屬于結構型模式,它通過提供抽象化和實作化之間的橋接結構,來實作二者的解耦,
這種模式涉及到一個作為橋接的介面,使得物體類的功能獨立于介面實作類,這兩種型別的類可被結構化改變而互不影響,
橋接模式實體
橋接模式:將實作和抽象放在兩個不同的類層次中,使之各自可以獨立改變,
他的主要特點是把抽象與行為分離開來,保持了各自的獨立性和擴展,
舉個汽車例子,汽車有多種品牌,也有多種型別,在擴展樣式或者品牌的時候互不影響,我們就可以將抽象部分與實作部分分離,使它們都可以獨立的變化,讓它們獨立變化,來減少它們之間耦合,
UML圖:

提供商標介面類,汽車品牌是他的實作類;汽車類是抽象類,汽車的類別通過繼承抽象類來分離出來,
代碼示例
代碼如下:
①、品牌介面
package com.lyd.demo;
/**
* @Author: lyd
* @Description: 汽車品牌的介面
* @Date: 2022-08-28
*/
public interface Brand {
void info();
void open();
void close();
}
②、汽車品牌
繼承汽車介面類
package com.lyd.demo.car;
import com.lyd.demo.Brand;
/**
* @Author: lyd
* @Description: 奔馳汽車類
* @Date: 2022-08-28
*/
public class Benz implements Brand {
private String type;
public Benz(String type) {
this.type = type;
}
public void info() {
System.out.println("奔馳汽車->" + type);
}
public void open() {
System.out.println("奔馳汽車");
}
public void close() {
System.out.println("奔馳汽車");
}
}
紅旗汽車類相同,這里就不貼代碼,詳細代碼之后會上傳github中,
③、抽象汽車類
通過聚合方式,使用構造法獲取品牌物件進行實體化
package com.lyd.demo;
/**
* @Author: lyd
* @Description: 汽車抽象類
* @Date: 2022-08-28
*/
public abstract class Car {
private Brand brand;
public Car(Brand brand) {
this.brand = brand;
}
public void info() {
this.brand.info();
}
public void open() {
this.brand.open();
}
public void close() {
this.brand.close();
}
}
④、汽車型別子類
繼承父類,重寫父類方法,這里也呼叫了父類方法,用列印的方式簡單理解
package com.lyd.demo.type;
import com.lyd.demo.Brand;
import com.lyd.demo.Car;
/**
* @Author: lyd
* @Description: 新能源
* @Date: 2022-08-28
*/
public class NewEnergy extends Car {
public NewEnergy(Brand brand) {
super(brand);
}
public void info() {
System.out.print("新能源型別汽車 -- ");
super.info();
}
public void open() {
System.out.print("新能源型別汽車啟動 -- ");
super.open();
}
public void close() {
System.out.print("新能源型別汽車關閉 -- ");
super.close();
}
}
⑤、橋接模式測驗
通過new汽車型別方式獲取汽車物件,其中可得到什么型別什么品牌的汽車
package com.lyd.demo.bridge;
import com.lyd.demo.Car;
import com.lyd.demo.car.Benz;
import com.lyd.demo.car.HongQi;
import com.lyd.demo.type.NewEnergy;
import com.lyd.demo.type.Suv;
/**
* @Author: lyd
* @Description: 測驗
* @Date: 2022-08-28
*/
public class BridgeTest {
public static void main(String[] args) {
Car banz = new Suv(new Benz("GLA"));
banz.info();
banz.open();
banz.close();
Car hq = new NewEnergy(new HongQi("H5"));
hq.info();
hq.open();
hq.close();
}
}
運行結果:

??創作不易,如有錯誤請指正,感謝觀看!記得一鍵三連哦!??
??德德小建議:
理解設計模式不是一件簡單的事情,需要不斷的學習和動手去練習,才能理解,只有掌握好設計模式,才能夠真正的理解SpringAOP和Mybatis的底層原理,各位讀者可以和我一樣,動手敲一敲代碼,甚至用不同的例子來做,通過debug一步一步除錯,還有就是多看看別人的例子,能夠有助于理解!謝謝各位觀看指點!?? ?? ??
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/506063.html
標籤:其他
下一篇:設計模式之(10)——橋接模式
