zoukankan      html  css  js  c++  java
  • 设计模式之访问模式

    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)
  • 相关阅读:
    HIHO线段树(成段)
    HIHO 线段树(单点)
    POJ 3468
    HDU 1754
    HDU 1698
    HDU 5119
    HDU 1394
    HDU 1166
    DZY Loves Chessboard
    谷歌Cookies无法写入
  • 原文地址:https://www.cnblogs.com/loveprogramme/p/13128512.html
Copyright © 2011-2022 走看看