设计模式之访问者模式(下)

3)访问者模式与组合模式联用
1.概述

在访问者模式中,包含一个用于存储元素对象集合的对象结构,可以使用迭代器来遍历对象结构,同时具体元素之间可以存在整体与部分关系,有些元素作为容器对象,有些元素作为成员对象,可以使用组合模式来组织元素。

2.结构图

在这里插入图片描述

4)总结
1.优点
  • 增加新的访问操作很方便。

  • 将有关元素对象的访问行为集中到一个访问者对象中,而不是分散在一个个的元素类中,类的职责更加清晰,有利于对象结构中元素对象的复用,相同的对象结构可以供多个不同的访问者访问。

  • 让用户能够在不修改现有元素类层次结构的情况下,定义作用于该层次结构的操作。

2.缺点
  • 增加新的元素类很困难。

  • 访问者模式要求访问者对象访问并调用每一个元素对象的操作,这意味着元素对象有时候必须暴露一些自己的内部操作和内部状态,否则无法供访问者访问。

3.适用场景
  • 一个对象结构包含多个类型的对象,希望对这些对象实施一些依赖其具体类型的操作,在访问者中针对每一种具体的类型都提供了一个访问操作,不同类型的对象可以有不同的访问操作。

  • 需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作“污染”这些对象的类,也不希望在增加新操作时修改这些类。

  • 对象结构中对象对应的类很少改变,但经常需要在此对象结构上定义新的操作。

相关推荐

  1. 【前端设计模式访问模式

    2024-04-23 16:42:05       58 阅读
  2. C++设计模式访问模式

    2024-04-23 16:42:05       36 阅读
  3. 设计模式访问模式

    2024-04-23 16:42:05       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-23 16:42:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-23 16:42:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-23 16:42:05       82 阅读
  4. Python语言-面向对象

    2024-04-23 16:42:05       91 阅读

热门阅读

  1. Djange解决跨域问题

    2024-04-23 16:42:05       38 阅读
  2. Vue2中返回页面,如何实现数据刷新

    2024-04-23 16:42:05       36 阅读
  3. torch.mm函数介绍

    2024-04-23 16:42:05       34 阅读
  4. 【Ansible】04

    2024-04-23 16:42:05       35 阅读
  5. Hystrix面试题

    2024-04-23 16:42:05       22 阅读
  6. 敏捷开发入门:原则、流程和工具解析

    2024-04-23 16:42:05       34 阅读