求救!不理解visitor模式```````

03-05-10 envy@u
    

gof的书上说这个模式使得增加新的操作变得容易,这个新的操作指添加在哪个对象中的操作?

是指增加在Visitor中的操作吗?

还有gof说增加新的ConcreteElement变得困难,因此增加ConcreteElement就要在Visitor中增加一个新的操作,这不是和上面的增加新的操作矛盾了吗?

估计我对增加新的操作的理解还不正确,最好能结合[url]http://www.jdon.com/designpatterns/visitor.htm[/url]一文给小弟解释一翻

感激不尽

    

iyshang
2003-05-10 17:31

增加操作意味着增加一个visitor类的子类,而不是在visitor中增加一个方法。

GoF说增加新的ConcreteElementx,那么当然应该在visitor中添加方法VisitConcreteElementx(ConcreteElementx),对应的每个visitor子类都要添加。banq说的:可见使用Visitor模式是有前提的,在两个接口Visitor和Visitable中,确保Visitor很少变化,变化的是Visitable,这样使用Visitor最方便.注意,这里visitor里面的类型也就是gof中的concreteElement, 应该是很少变化。

envy@u
2003-05-10 22:00

我大致明白了你的意思,不过能否结合http://www.jdon.com/designpatterns/visitor.htm里面的例子说明一下增加新的操作

iyshang
2003-05-10 23:42

增加ConcreteVisitor2类,在其中的visitCollection(Collection c)visitString(String s)visitFloat(Float f)三方法中添加新的功能。另外,ConcreteElement2 ConcreteElement3你要模仿ConcreteElement自己写。