设计模式学习笔记(二十六):访问者模式
1 概述 1.1 引言 患者就医时,医生开具处方后通常由药房工作人员准备药品,由划价人员根据药品数量计算总价,这里,可以将处方看作是一个药品信息的集合,里面包含了一种或多种不同类型的药品信息,不同类型的工作人员在操作同一个药品信息集合时将提供不同的处理方式,而且可能还会增加新类型的工作人员来操作处方单。 在软件开发中,有时候也需要处理像处方单这样的集合结构,在该对象结构中存储了多个不同类型的对象信息,而且对同一对象结构中的元素的操作方式不唯一,可能需要提供多种不同的处理方式,还有可能增加新的处理方式。这时候可以使用访问者模式进行处理。 访问者模式是一种较为复杂的行为型设计模式,它包含访问者与被访问者两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可以对它们进行不同的访问操作。访问者模式使得用户可以在不修改现有系统的情况下扩展系统的功能,为这些不同类型的元素增加新的操作。 1.2 定义 访问者模式:提供一个作用于某对象结构中的各元素的操作表示,它使得可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 访问者模式是一种对象行为型模式。 1.3 结构图 1.4 角色 Visitor (抽象访问者):为每一个具体元素类声明一个具体访问者的操作 ConcreteVisitor (具体访问者):实现抽象访问者中的操作 Element (抽象元素):接口/抽象类