zoukankan      html  css  js  c++  java
  • 二十四、 Visitor 访问者(行为型模式)

    1. 动机
    在软件构建过程中,由于需求的改变,某些类层次结构中常常需要增加新的行为(方法),如果直接在基类中做这样的更改,将会给子类带来很繁重的变更负担,甚至破坏原有设计。如何在不更改类层次结构的前提下,在运行时根据需要透明地为类层次结构上的各个类动态添加新的操作,从而避免上述问题?

    2. 意图
    表示一个作用于某对象结构中的各元素的操作。它可以在不改变各元素的类的前提下定义作用于这些元素的新的操作。

    3. 结构图
     

    4. 几个要点
    • Visitor模式通过所谓双重分发(double dispatch) 来实现在不更改Element类层次结构的前提下,在运行时透明地为类层次结构上的各个类动态添 加新的操作。
    • 所谓双重分发即 Visitor模式中间包括了两个多态 分发(注意其中的多态机制):第一个为accept方法的多态辨析;第二个为visit方法的多态辨析。
    • Visitor模式的最大缺点在于扩展类层次结构(增 添新的Element子类),会导致Visitor类的改变。 因此Vistor模式适用于“Element类层次结构稳定, 而其中的操作却经常面临频繁改动”。 

    5. .net平台中的应用

    6. 个人体会
        双重分发,通过两个方向的多态辨析来降低耦合,一个是类间虚方法重写,一个是类中方法参数重载。
        该模式假定类层次结构是稳定的,这个应该限制了一大部分应用范围。
        没有万能的模式,只有合适的模式。 

  • 相关阅读:
    Monkey测试
    第八周作业-说说本周项目工作中的情况
    第七周作业-谈谈各种文档
    第六周作业-UML在详细设计阶段的使用心得&&UML建模与软件开发过程模型
    第五周作业-Markdown的使用心得
    第四周作业-Java Web学习心得
    第三周作业-谈谈对编程规范的认识
    第二周作业-软件工作量的估计
    支付宝-发展史及其优缺点
    三种软件的特点分析
  • 原文地址:https://www.cnblogs.com/stone_lv/p/2064237.html
Copyright © 2011-2022 走看看