look06888

导航

访问者模式

访问者模式-Visitor Pattern

是什么?

是一种将数据结构与数据操作分离的模式。
核心思想是解耦数据结构与数据操作。
表示一个作用于某个对象结构中的各元素的操作

可以做什么?

可以在不改变数据结构的前提下,扩展不同数据操作类型,实现对相同元素的不同操作。

怎么实现的?

固定类型的对象内部提供一个accept()方法用来接受访问者对象的访问,然后在内部将自己转发到访问者对象visit()方法内
通过实现预定义的接口方法:

应用场景

  • 餐厅点餐,同一份菜单不同客户点的东西不一样结算金额不一样
  • 同一份菜,不同人点不同大小份,在原价上加减价格
  • 会员制度,在正常消费基础上根据普通会员等级进行结算
  • 应用场景总结:
    1.数据结构稳定,但是数据操作需要经常变化
    2.需要对不同数据类型(元素)进行操作,但又不使用分子判断具体类型的场景

优缺点

  • 优点:解耦数据结构和数据操作,操作集合可以独立变化,易扩展,角色各司其职,符合单一原则
  • 缺点:新增元素类型就需要修改访问者的代码,违反了开闭原则和依赖倒置原则

代码实现示例

posted on 2024-03-30 02:02  Look068  阅读(4)  评论(0编辑  收藏  举报