Skip to content

Latest commit

 

History

History
23 lines (12 loc) · 1.29 KB

File metadata and controls

23 lines (12 loc) · 1.29 KB

Visitor Pattern 访问者模式

允许一个或多个操作应用到一组对象上,解耦操作和对象本身,即把业务操作和具体的数据结构解耦,设计成独立的类,保持类职责单一、满足开闭原则。

访问者模式将操作与对象结构分离,使得可以在不改变对象结构的情况下,定义新的操作。这种模式适用于对象结构中的元素相对稳定,但对于不同操作的需求却经常变化的情况。

访问者模式可以给一系列对象透明的添加功能,并且把相关代码封装到一个类中。

对象只要预留访问者接口,则后期为对象添加功能的时候,就不需要改动对象。

两个主要的角色

  1. 访问者是一个接口或抽象类,定义了可以访问元素的各种操作
  2. 元素则一个类的集合,这些类都实现了一个接受访问者的方法

通过这种方式,访问者可以在访问不同元素时执行相应的操作。

优缺点

访问者模式的主要优点是可以在不修改现有对象结构的情况下,增加新的操作。这使得该模式非常适用于需要频繁添加新功能的系统。

访问者模式也有一些缺点,例如增加新的元素类会比较困难,因为需要修改所有访问者的接口或抽象类。