定义:把抽象化和实现化解耦,二者都可以独立变化发展,需要一个作为桥接的接口,使得实体类的功能独立于接口实现类。
个人理解:分离抽象与具体实现,让他们可以独自发展。下面举例使用一个礼物,礼物可以抽象为多种,而实现类也可以自己独立拓展。
UML图解:
优点:抽象类和实现类分离,可以独立发展,有很好的的扩展性。
缺点:(选自菜鸟教程)桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。
代码:
//抽象类(礼物),聚合抽象实现类
public abstract class Gift {
GiftImpl impl;
}
//抽象类的拓展
public class WarmGift extends Gift {
public WarmGift(GiftImpl impl) {
this.impl = impl;
}
}
//抽象类的拓展(可以添加多个)
//礼物实现类
public class GiftImpl {
}
//具体的礼物
public class Flower extends GiftImpl {
}
//具体的礼物(拓展多个)
//一个帅哥给一个美女送礼物
public class GG {
public void chase(MM mm) {
Gift g = new WarmGift(new Flower());
give(mm, g);
}
public void give(MM mm, Gift g) {
System.out.println(g + "gived!");
}
}
总结:对于两个独立变化的维度,使用桥接模式再适合不过了。