java-橋接模式
阿新 • • 發佈:2019-03-25
調用 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-橋接模式