一、桥接模式概述
在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。
在提出桥接模式的时候指出,桥接模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦。
桥接模式适用于:1、你不希望在抽象和他的实现之间有一个固定的绑定关系;2、类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充;3、对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译;4、你想对客户完全隐藏抽象的实现部分;5、你想在多个对象之间共享实现,但同时要求客户并不知道这一点。
桥接模式的类图如下:
可以看出,这个系统含有两个等级结构,也就是:由抽象化角色和修正抽象化角色组成的抽象化等级结构和由实现化角色和两个具体实现化角色所组成的实现化等级结构。
桥梁模式所涉及的角色有: