访问者模式

    上两篇文章中介绍的状态模式和策略模式结构有所类似,解决的问题的类型有所联系、又有所差异。本篇作为该设计模式系列的最后一篇模式介绍性的文章,将简单介绍访问者模式。这个模式在解决的问题的本质上,与上面两个模式还是有相同点的。状态模式是本身具有多个状态,可能由于自己的属性切换;策略模式是问题具有多种方案,可能根据环境选择不同的策略;访问者模式是问题可能被多个处理者处理。
    假设一个电商平台,某后台会定期的从其他系统接收到一个消息队列,队列中是最近一个时间段发生的订单详情。这些订单可能有成功的、可能有失败的,还有很多其他的性质,该后台中的多个功能模块都处于不同的目的,需要对订单进行处理,提取有用的信息。还是老问题,如果将这些处理写在一起,代码臃肿、不便于扩展、难以维护。
    访问者模式将被访问的元素和访问者两个维度都进行了抽象,使得系统的灵活性得到了极大的提高。

    抽象元素使得不同细分类型的数据得以被统一的管理,抽象访问者使得不同的具体访问者可以被统一管理和动态的切换。
    访问者可以使用重载来提供针对不同具体元素类型的不同处理逻辑。
    总结:
        优点:
  • 运用这种模式,元素和访问者的扩展都变得简单,不必修改已有代码,更加符合开闭原则。
  • 类的职责更加清晰,更符合单一职责原则
  • 将元素的定义和使用隔离开来
        缺点:
  • 新增元素类型复杂,需要新增访问者的一个重载访问方法。
        适用场景:
  • 一个对象类型包含很多不同的具体类型
  • 需要被很多独立不同的处理逻辑处理
  • 对象的结构、类型很少改变
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值