设计模式解密(12)- 桥接模式
1、简介
定义:将抽象部分与实现部分分离,使它们都可以独立的变化。
主要解决:在多维可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。
何时使用:实现系统可能有多个角度分类,每一种角度都可能变化。
如何解决:把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合。
注意事项:对于两个独立变化的维度,使用桥接模式再适合不过了。
英文:bridge
类型:结构型
2、问题引入
在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?
先来试想一个情景(OA系统中的消息处理):
消息类型:普通消息,加急消息,特急消息
消息方式:系统内消息,手机短信,邮件
在不使用桥接模式的情况下(即:使用继承方式),首先我们想到的方案:为每一种消息方式都提供一套消息类型,或者为每一种消息类型都提供一套消息方式;