一、概述
桥接模式,也叫作桥梁模式,英文是 Bridge Design Pattern。在 GoF 的《设计模式》一书中,桥接模式是这么定义的:“Decouple an abstraction from its implementation so that the two can vary independently。”翻译成中文就是:“将抽象和实现解耦,让它们可以独立变化。”
基本UML图如下:
从形式上看,就是将一个抽象(接口)作为成员变量放入另一个抽象类中,以实现【抽象与实现的解耦】,这样
ImplementorImpl
与AbstractImpl
可以各自做自己的事情而互不影响,可以独立变化,而又自由组合。
桥接模式遵从了【组合优于继承】的原则。
二、案例
告警系统:根据告警级别推送不同的告警渠道:
1、普通告警,邮件通知
2、严重告警,电话通知
-
创建一个抽象通知类,即最大抽象类
Abstarct
/** * 抽象的通知类 */ public abstract class AbstractNotification { /** * 重要:将通知方式接口作为成员变量:实现组合,解耦! */ protected NoticyWayImplementor implementor; /** * 重要:实现组合,解耦! */ public AbstractNotification(NoticyWayImplementor implementor) { this.implementor = implementor; } /** * 通知方法 */ public abstract void sendMsg(String msg); }
-
创建一个通知方式接口
Implementor
,并组合到Abstract
中/** * 通知方式接口 */ public