桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。
在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。
所谓的多个维度的变化,比如画画:有3个颜色,有3个图形,那么就可以有3*3=9种组合。在这个例子中,图形和颜色就是2个不同的维度。
设计模式读书笔记-----桥接模式
上面的例子中,如果不使用模式:
第一,子类太多。
第二,由于客户端与具体子类的耦合度很高,导致在子类间切换非常繁琐。
第三,如果以后需要扩展子类功能的话,则子类的数目会随着维度以及每一个维度中子类的个数的增加呈几何倍数增长。
使用桥接模式:
第一,子类的数目减少了。
第二,实现部分的切换非常容易,主要表现在抽象部分和实现部分的耦合度很低,因为使用聚合取代了继承。
第三,扩展的时候很简单,可以更好的容纳变化,不论是维度的增加还是每一个维度中子类的个数的增加,都会变得非常简单。