State模式将不同的状态与与其对应的行为封装在了State对象中。
而Visitor模式却是将结构与行为分离开。
不同的结构产生不同的行为。
但是,大量的if和else让我们感到厌烦。
于是乎,Visitor出现了。
模式的控制权在Element/Visitable手上。其accept(Visitor)方法规定了其是否可以被Visitor访问。
Visitor可以访问Element的内部状态但是不可以改变其结构。
Visitor必须为每一个 具体的Element 定义一个可以被访问的的接口。
所以,使用Visitor模式最好是保持Visitor稳定不变。即行为不要有太大的变动。