CH06_访问数据结构

Visitor 模式

访问者模式(Visitor),表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的提前下定义作用于这些元素的新操作。

类图

在这里插入图片描述

说明

  • Visitor(访问者)

    Visitor角色负责对数据结构中每一个具体的元素(ConcreteElement角色)声明一个用于访问XXXX的visit(XXXX)方法。visit(XXXX)是用于处理XXXX的方法,负责实现该方法的是ConcreteVisitor角色。

  • ConcreteVisitor(具体的访问者)

    ConcreteVisitor角色负责实现Visitor角色所定义的接口(API)。它要实现所有的visit(XXXX)方法,即实现如何处理每一个ConcreteElement角色。

  • Element(元素)

    Element角色表示Visitor角色的访问对象,它声明了接受访问者的accept方法。accept方法接收到的参数是Visitor角色。

  • ConcreteElement

    ConcreteElement角色负责实现Element角色所定义的接口(API)。

  • ObjectStructure(对象结构)

    ObjectStructure角色负责处理Element角色的集合。ConcreteVisitor角色为每一个Element角色都准备了处理方法。

Chain of Responsibility 模式

职责链模式(Chain of Responsibility),使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有个对象处理它为止。

类图

在这里插入图片描述

  • Handler(处理者)

    Handler角色定义了处理请求的接口(API)。Handler角色知道“下一个处理者”是谁,如果自己无法处理请求,它会将请求转给“下一个处理者“,“下一个处理者”也是Handler角色。

  • ConcreteHandler(具体的处理者)

    ConcreteHandler角色是处理请求的具体角色。

  • Client(请求者)

    Client角色是向第一个ConcreteHandler角色发送请求的角色。

相关推荐

最近更新

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

    2023-12-23 23:06:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-23 23:06:01       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-23 23:06:01       82 阅读
  4. Python语言-面向对象

    2023-12-23 23:06:01       91 阅读

热门阅读

  1. MyBatis的延迟加载(懒加载)

    2023-12-23 23:06:01       63 阅读
  2. SpringBoot整合Mybatis遇到的常见问题及解决方案

    2023-12-23 23:06:01       62 阅读
  3. 点云分割--基于PatchWork++的地面点云分割

    2023-12-23 23:06:01       69 阅读
  4. vue2与vue3的区别

    2023-12-23 23:06:01       51 阅读
  5. 7-9 装箱问题

    2023-12-23 23:06:01       63 阅读
  6. C++面向对象(OOP)编程-位运算详解

    2023-12-23 23:06:01       53 阅读
  7. <ctype.h> 头文件:C 语言字符处理函数详解

    2023-12-23 23:06:01       57 阅读