访问者模式

    上两篇文章中介绍的状态模式和策略模式结构有所类似,解决的问题的类型有所联系、又有所差异。本篇作为该设计模式系列的最后一篇模式介绍性的文章,将简单介绍访问者模式。这个模式在解决的问题的本质上,与上面两个模式还是有相同点的。状态模式是本身具有多个状态,可能由于自己的属性切换;策略模式是问题具有多种方案,可能根据环境选择不同的策略;访问者模式是问题可能被多个处理者处理。
    假设一个电商平台,某后台会定期的从其他系统接收到一个消息队列,队列中是最近一个时间段发生的订单详情。这些订单可能有成功的、可能有失败的,还有很多其他的性质,该后台中的多个功能模块都处于不同的目的,需要对订单进行处理,提取有用的信息。还是老问题,如果将这些处理写在一起,代码臃肿、不便于扩展、难以维护。
    访问者模式将被访问的元素和访问者两个维度都进行了抽象,使得系统的灵活性得到了极大的提高。
访问者模式_第1张图片
    抽象元素使得不同细分类型的数据得以被统一的管理,抽象访问者使得不同的具体访问者可以被统一管理和动态的切换。
    访问者可以使用重载来提供针对不同具体元素类型的不同处理逻辑。
    总结:
        优点:
  • 运用这种模式,元素和访问者的扩展都变得简单,不必修改已有代码,更加符合开闭原则。
  • 类的职责更加清晰,更符合单一职责原则
  • 将元素的定义和使用隔离开来
        缺点:
  • 新增元素类型复杂,需要新增访问者的一个重载访问方法。
        适用场景:
  • 一个对象类型包含很多不同的具体类型
  • 需要被很多独立不同的处理逻辑处理
  • 对象的结构、类型很少改变

你可能感兴趣的:(访问者模式)