Bridge模式
What
"Bridge":桥梁
在“类的功能层次结构”和“类的实现层次结构”之间搭建桥梁的设计模式。
Why
为什么要使用Bridge模式?
当类的层次结构只有一层的时候,功能层次结构与实现层次结构会混杂在一个层次结构中,这会降低代码的可读性。
当该类的性态较多,且不固定,比方说多边形有长方形和菱形两个子类,它们都有红黑两种颜色,那么按照排列组合就有4个多边形的子类。如果忽然加入白色,那么就要额外在多两个子类。但是如果将颜色抽象为一个维度,从继承改为组合,那么只需有长方形,棱形两个多边形子类作为功能层次结构,另外再由红黑两个颜色作为实现层次结构,如果需要红色长方形,则让长方形实现红色实现类即可实现,若要新增白色颜色,也只需要新增一个白色作为实现层次结构。
什么是强关联,什么是弱关联?
像继承关系,A是B的子类,那么AB就为强关联。
像委托关系,当A作为实例被生成时,B才会作为参数被传入的类构成关联。
Bridge模式适用于什么场景?
当一个对象具有多态性,且变化因素可以动态变化或者不固定,可以尝试将变化因素抽象成一个维度,以组合代替继承。
How
确定一个抽象类,确定其性态以及功能,判断其是否需要使用Bridge模式进行处理,若需要则进行下一步。
深入理解该类,选取适合的维度进行独立。
了解客户端的业务需求,并在抽象基类中定义它们。
确定在所有平台上都可执行的业务。并在通用实现接口中声明抽象部分所需的业务。
为你域内的所有平台创建实现类,但需确保它们遵循实现部分的接口。
在抽象类中添加指向实现类型的引用成员变量。抽象部分会将大部分工作委派给该成员变量所指向的实现对象。
类图
![](https://i-blog.csdnimg.cn/blog_migrate/92ad0f57ba89a0aa305c1c26dffe5745.png)