思想:将一个类的抽象定义和具体实现解耦。
场景:该 模式的典型应用场景是:一个类的抽象定义已经确定,但是,其实现代码甚至原理可能会不同。比如:我们最熟悉的图形界面中的window的 实现,无论在什么操作系统,什么平台的机器上,一个window应具有的抽象定义基本上是一致的, 但是,其实现代码肯定会因为平台不同,机器的代码指令不同而不同。此时,如果希望您写的window类 能跨平台,应用Bridge模式就是一个好主意。
实现:该 模式的实现方法很简单,就是除了定义类的抽象定义之外,将一个类的所有实现代码独立出一个实现类。这样一来,无论是抽象定义还是实现类都能分别修改和重 用,但只要两部分的交互接口不变,还是可以方便的互相组装。当然,实际上也没有必要隔离出“所有实现代码”,只需要隔离需要的部分就行了。因此,也可以 说,从代码结构来看,Builder模式是一种变种的Bridge模 式的。也经常有人将Bridge模式和接口相比较,如果隔离出所有的实现,那么的确接口的方式也能 做到抽象定义和实现分离,但是,Bridge有其优势如下:一、究竟隔离多少代码到Bridge类 中可以灵活确定,二、减少了总的类的数目,三、允许被隔离出来的Bridge类被其它的类直接共享 使用。
重构成本:中。将所有的(或很大部分)实现代码分离开来总还是一件不大,但是,也不小的事。所以标个“中”在这里。:)
2.3Composite
思想:将 对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致 性。
场景:该 模式的应用场景极其类似,比如像图形系统,如电路设计、UML建模系统,或者