from abc import ABCMeta, abstractmethod # 访问模式:封装一些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作 # 三个角色:访问者、数据节点、对象结构 class DataNode(metaclass=ABCMeta): """数据结构类""" def access(self, visitor): """接受访问者的访问""" visitor.visit(self) class Visitor(metaclass=ABCMeta): """访问者""" @abstractmethod def visit(self, data): """对数据对象的访问操作""" pass class ObjectStructure: """数据结构的管理类,也是数据对象的容器,可遍历容器内的所有元素""" def __init__(self): self.__datas = [] def add(self, dataElement): self.__datas.append(dataElement) def action(self, visitor): """进行数据访问的操作""" for data in self.__datas: data.accept(visitor)
原文:https://www.cnblogs.com/loveprogramme/p/13128512.html