这些算法定义多个接口一 致,但是实现方法不同的版本,并在需要的时候灵活的替换这些算法。
实现:实 现方式同Bridge模式。
重构成本:中。
3.11Visitor
思想:表 示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
场景:其 实你不用去理解上面这句话。该模式其实又是一个在代码的物理结构上和Bridge模式很相似的模 式。但是,其语义,其目的,在逻辑上又是不同的。如果说Bridge,以及上述我称为可视为Bridge扩 展的模式中,作为参数的Bridge类,是作为调用类的被访问对象的话,Visitor, 在大多数情形下,如其英文含义,它在语义上是完全相反的。不是他被调用的类处理,更大程度上它处于主动状态,是它去访问,去处理调用它的类。调用它的类, 把自己对别人隐藏起来的东西,暴露给Visitor品尝,任君蹂躏(这个,这个~~千 万别想歪了;-))。另一方面,即使逻辑上没有这种Visitor主 动去访问调用类的语义,只要Visitor类中的操作,是依赖于调用类的具体实现类(它本身或他某 个层次的子类)的某些状态或者方法的,那么,就可以应用该模式来分离出这样的可重用的操作。