26.Visitor(行为型模式)

【起源】

         类的层次结构稳定,但同一rank上的类的行为不稳定(随时需要扩展),将需要扩展的方法隔离封装出来,就是Visitor模式。

 

【动机】

         表示一个作用于某个对象结构中的各元素的操作。它可以在不改变各元素类的前提下,定义作用于这些元素的新操作。

 

【核心】

         抽象类/接口           类1   类2   类3   。。。

             方法1

             方法2

             方法3

             。。。                                                          

           AbstractVisitor            v1       v2    v3     。。。

 

         通常是使用 抽象类/接口 在水平方向上扩展子类,以应对变化;

         Visitor是在垂直方向上扩展,应对方法种类的变化;

         具体调用的方法 由(类,visitor)共同决定,具体类(主人)留出一个Accept接口 与 具体的Visitor(访问者)握手。

         Visitor需要对每个具体类(主人)有所了解,并实现 visit 方法。

         Strategy 与 Visitor 在微观上有相似之处:都是把实现操作的代码,封装到外部;

         它们也有明显的不同之处:Strategy封装出来的操作可以应用到每个兄弟类中,即多个兄弟类有操作方面的共性,而Visitor要面对很有个性的多个兄弟。

         一个具体的visitor帮助所有兄弟类增加一个方法,需要增加n个方法,就实现n个具体的visitor。

 

【代码实例】

 

 

【模型图】

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值