• 设计模式访问者模式(Visitor)


    访问者模式
    概述
        表示一个作用于某对象结构中的各元素的操作。
        它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
    适用性
        1.一个对象结构包含很多类对象,它们有不同的接口,而你想对这些对象实施一些依赖于其具体类的操作。
    
        2.需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而你想避免让这些操作“污染”这些对象的类。
          Visitor使得你可以将相关的操作集中起来定义在一个类中。
          当该对象结构被很多应用共享时,用Visitor模式让每个应用仅包含需要用到的操作。
    
        3.定义对象结构的类很少改变,但经常需要在此结构上定义新的操作。
          改变对象结构类需要重定义对所有访问者的接口,这可能需要很大的代价。
          如果对象结构类经常改变,那么可能还是在这些类中定义这些操作较好。
    参与者
        1.Visitor
          为该对象结构中ConcreteElement的每一个类声明一个Visit操作。
          该操作的名字和特征标识了发送Visit请求给该访问者的那个类。
          这使得访问者可以确定正被访问元素的具体的类。
          这样访问者就可以通过该元素的特定接口直接访问它。
    
        2.ConcreteVisitor
          实现每个由Visitor声明的操作。
          每个操作实现本算法的一部分,而该算法片断乃是对应于结构中对象的类。
          ConcreteVisitor为该算法提供了上下文并存储它的局部状态。
          这一状态常常在遍历该结构的过程中累积结果。
    
        3.Element
          定义一个Accept操作,它以一个访问者为参数。
    
        4.ConcreteElement
          实现Accept操作,该操作以一个访问者为参数。
    
        5.ObjectStructure
          能枚举它的元素。
          可以提供一个高层的接口以允许该访问者访问它的元素。
          可以是一个复合或是一个集合,如一个列表或一个无序集合。
    Example
     
    
  • 相关阅读:
    oracle拆分逗号分隔字符串 实现split[转]
    Oracle 编译、调用或调试Procedure、Function或Package时卡死问题
    The log sequence numbers 1602631 and 1602631 in ibdata files do not match the log sequence number 2188207 in the ib_logfiles!
    win10下安装pl/sql developer 10.0.5.1710 报错ORA-12154
    Oracle EBS-SQL (INV-5):检查期间拉式物料领用记录数.sql
    Oracle EBS-SQL (INV-4):检查负库存记录数.sql
    Oracle EBS-SQL (WIP-16):检查期间手工下达的车间任务数.sql
    Oracle EBS-SQL (WIP-15):检查车间任务物料未发数量与现有量对照.sql
    Oracle EBS-SQL (WIP-14):检查车间需求与BOM差异对照.sql
    Oracle EBS-SQL (WIP-13):检查任务组件未选MRP净值.sql
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152735.html
Copyright © 2020-2023  润新知