这里摘抄一份他处的概念,你可以不必理会,先看下面得讲解与实例,然后返回来理解概念,不然抽象的概念会让你崩溃...
桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。
个人理解:桥接是一个接口,它与一方应该是绑定的,也就是解耦的双方中的一方必然是继承这个接口的,这一方就是实现方,而另一方正是要与这一方解耦的抽象方,如果不采用桥接模式,一般我们的处理方式是直接使用继承来实现,这样双方之间处于强链接,类之间关联性极强,如要进行扩展,必然导致类结构急剧膨胀。采用桥接模式,正是为了避免这一情况的发生,将一方与桥绑定,即实现桥接口,另一方在抽象类中调用桥接口(指向的实现类),这样桥方可以通过实现桥接口进行单方面扩展,而另一方可以继承抽象类而单方面扩展,而之间的调用就从桥接口来作为突破口,不会受到双方扩展的任何影响。
下面的实例能真正体现着一点:
实例准备:我们假设有一座桥,桥左边为 A,桥右边为 B,A 有 A1,A2,A3 等,表示桥左边的三个不同地方,B 有 B1,B2,B3 等,表示桥右边的三个不同地方,假设我们要从桥左侧 A 出发到桥的右侧 B,我们可以有多重方案,A1 到 B1,A1 到 B2,A1 到 B3,A2 到 B1... 等等,以此为例,代码如下:
桥接口: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:AreaA
- 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
来源: http://www.cnblogs.com/V1haoge/p/6497919.html