一 概念
桥接模式用于把抽象化与实现化解耦,使得两者可以独立变化。
这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。
实现要点:实现化类继承某个统一接口(桥接口),抽象化持有该接口的引用。
二 实例
比如我们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. 分离抽象部分和实现部分
桥梁模式分离了抽象部分和实现部分,从而极大的提高了系统的灵活性。让抽象部分和实现部分独立出来,分别定义接口,这有助于对系统进行分层,从而产生更好的结构化的系统。
2. 更好的拓展
桥梁模式使得抽象部分和实现部分可以分别独立的扩展,而不会相互影响,从而大大提高了系统的可扩展性。