23种设计模式(二十三)访问者模式(阁瑞钛伦特软件-九耶实训)

常说的设计模式是23种设计模式,分为3大类:

  • 创建型模式5种:工厂方法、抽象工厂、单例、建造者、原型
  • 结构型模式7种:适配器、代理、桥接、装饰者、外观、享元、组合
  • 行为型模式11种:模板方法、解释器、策略、观察者、迭代器、职责链、命令、备忘录、状态、访问者、中介者。

上次咱们说了“状态模式”,今天咱们来说“访问者模式”。

 

“访问者模式”重点在于访问,需要两个角色:“访问者”和“被访问者”。

“被访问者”要调用“访问者”的访问行为,从而输出“访问者”访问的信息。

也就是说,“被访问者”是被动的,要通过“访问者”输出“被访问者”的信息。

先定义,“被访问者”的抽象行为。

 

“Node”是“被访问者”的抽象类

 “NodeB”实现类

 

 

“accept”方法是调用“访问者”的行为去执行信息。

“Visitor”是“访问者”的接口

 “VisitorA”实现类

“visit”方法显示“Node”的信息。

主要控制类“ObjectStructure”,用来确定“访问者”访问“被访问者”的流程控制

“nodes”是List集合,用来添加“被访问者”节点。

“action”方法是接收“访问者”访问List集合中的每一个“被访问者”节点。

“add”方法添加“被访问者”节点的对象。

实际应用:

主要控制类对象“ObjectStructrue”

添加了两个“被访问者”对象“NodeA”和“NodeB”

执行“action”接受“VisitorA”“访问者”访问

下面我们模拟一个实际场景。

《西游记》中,孙悟空在天庭被封弼马温时,成天无所事事,除了放马,就是到处游玩。

假设“访问者”是孙悟空,“被访问者”节点是游玩的地点。这样就更容易理解访问者模式的结构。

“被访问者”抽象类

 

第一个被访问的地点实现类——“东海龙宫”

 

 

第二个被访问的地点——“凌霄宝殿”

 

设置一个“访问者”接口

访问者的实现类——孙悟空

 

 

总调度流程控制类

最后应用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值