易简.道(ething)

爱在进行时
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

设计模式-访问者

Posted on 2011-10-25 09:51  如是如是  阅读(137)  评论(0编辑  收藏  举报

访问者模式:上门服务的"贱"模式。有两个角色

访问者 和 爷

 

来看爷,访问者总得做点什么?Visitor.visit(爷)

爷也要,摆个姿态接受下 爷.Accept(Visitor){Visitor.visit('爷')}

 

具体做什么?访问者说了算,可以理发、修脚、按摩、盘道,随便了。

 

也只要写个Accecpt,访问者,提供服务方法

爷.Accept(访问者)

{

访问者.Visit(爷);

}

 

 

正经点:

访问者模式的目的在于,不改变类的前提下,为类增加一个新的操作

当然,也有这样说的,在不改变一个层次结构中的类的情况下,为一个层次结构定义一个新的操作。

 

实现的机制是,为访问者定义一个接口(抽象类也行),并将Accept()方法计算入到" 爷"的层次结构中。

利用两次分发机制()访问者先调用"爷"的Accept(Visitor)方法(注意:Visitor访问者是参数),然后,接收

了Accept(Vistor)方法调用的对象将调用结果用一个Visit(this)方法反馈给访问者。(您给的礼,我笑纳了。)

Visit()方法定义在Visitor中。举个例子,理发的方法(Visit),当然理发师掌握着(Visitor)

 

我家大门常打开,欢迎你来这里…….