桥接模式简介(Bridge)
桥接模式是指将抽象和实现放入两个不同层次,使它们能任意改变。比如我们设计一个手机的类,其中有翻盖手机,直板手机,触屏手机。。然后每个手机又有不同的牌子,比如vivo,小米,华为。。。试想,如果我们通过面向对象继承来实现的话,我们需要创造n*n个类比如vivo翻盖,vivo直板,小米触屏。。。这样就会产生类爆炸,而且当我们想扩展比如一个旋转手机,那么我们还需要去创造不同品牌的手机先然后再创建xxx旋转手机的类,即当我们需要增加样式的时候,我们需要增加所有品牌的手机,这样就违反了单一职责原则。

而桥接模式基于类的最小设计原则,桥接模式是一种结构型模式,它通过聚合和继承来将两个变化的层次分离开来,从而保持类的可扩展性。
UML

其中Abstraction和RefinedAbstraction就是抽象层,而右边的Implementor就是实现层,在桥接模式中,抽象层就充当桥的部分将客户端和实现相连。在抽象层中聚合了实现,比如说我们可以将手机作为一个抽象Abstraction然后我们去实现不同类型的手机,比如说直板,触屏等,然后这个抽象类中聚合了一个品牌brand的接口,如果需要实现不同品牌类型的手机,只需要去实现brand接口然后将它聚合到抽象层中就行了。
这样,手机就可以这样设计了

这样,桥接模式来代替继承可以有效地减少类的个数,而且易于扩展维护,有助于系统的分层设计,但是桥接模式需要辨别出两个变化的部分——抽象和实现,所以使用范围有一定的局限性。