1. 程式人生 > >java-橋接模式

java-橋接模式

調用 from rri 產生 綁定 code 部分 target stat

一 概念

橋接模式用於把抽象化與實現化解耦,使得兩者可以獨立變化。
這種類型的設計模式屬於結構型模式,它通過提供抽象化和實現化之間的橋接結構,來實現二者的解耦。
這種模式涉及到一個作為橋接的接口,使得實體類的功能獨立於接口實現類。這兩種類型的類可被結構化改變而互不影響。

實現要點:實現化類繼承某個統一接口(橋接口),抽象化持有該接口的引用。

二 實例

比如我們A站點有A1,A2,A3, B站點有B1,B2,B3 我們要從A去到B

橋接口(實現化角色(Implementor)):Qiao

1 public interface Qiao {
2     //目的地B
3     void targetAreaB();
4 }




目的地B1,B2,B3(具體實現化角色)
 1  /**
 2  * 目的地B1
 3  */
 4 public class AreaB1 implements Qiao {
 5 
 6     @Override
 7     public void targetAreaB() {
 8         System.out.println("我要去B1");
 9     }
10 
11 }
12 
13 /**
14  * 目的地B2
15  */
16 public class AreaB2 implements Qiao {
17 
18     @Override
19     public void targetAreaB() {
20         System.out.println("我要去B2");
21     }
22 
23 }
24 
25 /**
26  * 目的地B3
27  */
28 public class AreaB3 implements Qiao {
29 
30     @Override
31     public void targetAreaB() {
32         System.out.println("我要去B3");
33     }
34 
35 }



抽象來源地A(抽象化角色)
1 public abstract class AreaA {
2     //引用橋接口
3     Qiao qiao;
4     //來源地
5     abstract void fromAreaA();
6 }

來源地A1,A2,A3(修正抽象化角色)
 1 /**
 2  * 來源地A1
 3  */
 4 public class AreaA1 extends AreaA {
 5 
 6     @Override
 7     void fromAreaA() {
 8         System.out.println("我來自A1");
 9     }
10     
11 }
12 
13 /**
14  * 來源地A2
15  */
16 public class AreaA2 extends AreaA {
17 
18     @Override
19     void fromAreaA() {
20         System.out.println("我來自A2");
21     }
22 
23 }
24 
25 /**
26  * 來源地A3
27  */
28 public class AreaA3 extends AreaA {
29 
30     @Override
31     void fromAreaA() {
32         System.out.println("我來自A3");
33     }
34 
35 }
測試類
1 public class Clienter {
2     public static void main(String[] args) {
3         AreaA a = new AreaA2();
4         a.qiao = new AreaB3();
5         a.fromAreaA();
6         a.qiao.targetAreaB();
7     }
8 }

輸出結果
我來自A2
我要去B3

  註意點:

    1、定義一個橋接口,使其與一方綁定,這一方的擴展全部使用實現橋接口的方式,這就是被調用方。

    2、定義一個抽象類,來表示另一方,在這個抽象類內部要引入橋接口,而這一方的擴展全部使用繼承該抽象類的方式,者一方是調用方。


三 特點
1. 分離抽象部分和實現部分
橋梁模式分離了抽象部分和實現部分,從而極大的提高了系統的靈活性。讓抽象部分和實現部分獨立出來,分別定義接口,這有助於對系統進行分層,從而產生更好的結構化的系統。

2. 更好的拓展
橋梁模式使得抽象部分和實現部分可以分別獨立的擴展,而不會相互影響,從而大大提高了系統的可擴展性。

java-橋接模式