Visitor模式是一个用起来很简单,理解起来可能稍微有一点困难的模式。不过明白了之后就清楚了,其实也是非常的简单。
问题
需要向对象结构中增加新的方法,但是增加起来会很费劲或者会破坏设计。
案例
举一个例子。假设我们有一组机器(Windows,Unix,Linux,Mac等),每种机器都有自己不同的底层结构。现在需要在各台机器上装一个软件或者进行一项配置。由于每种操作系统都是不一样的架构,所以做某种配置或者是安装某款软件的手顺都是不同的,而且我们不可能也不想在原有的操作系统中直接添加一个同名的方法来实现这个功能。那么这个时候,Visitor模式就是一个很好的利器了。
还有,最近做的一个工具也是比较适合使用Visitor模式。这个工具是类似于Findbugs的一种功能,要解析一种编程语言的源码文件,然后对其中的内容进行分析,看是否符合某种类型的bug pattern。源码文件首先将被解析