Skip to content

Latest commit

 

History

History
17 lines (11 loc) · 970 Bytes

READMED.md

File metadata and controls

17 lines (11 loc) · 970 Bytes

3.10 访问者模式

将数据结构与操作分离,在不修改数据结构的情况下添加新的操作,将操作封装成一个访问者对象,该访问者对象可以在不同的数据元素上执行相应的操作。

案例

不同类型的景点,例如博物馆和动物园。我们希望针对不同的群体进行不同的操作,比如计算票价、收集信息等。这就是一个适用于访问者模式的场景。

访问者模式 优缺点

优点:

  • 扩展性好。在不修改元素的情况下,为元素添加新的功能。
  • 通过访问者来分离无关的行为,把相关的行为封装在一起,构成一个访问者,这样每一个访问者的功能都比较单一。

缺点:

  • 在访问者模式中,每增加一个新的元素类,都要在每一个具体访问者类中增加相应的具体操作,这违背了“开闭原则”。
  • 访问者模式依赖了具体类,而没有依赖抽象类。