iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >设计模式系列之访问者模式的优点有哪些
  • 875
分享到

设计模式系列之访问者模式的优点有哪些

2024-04-02 19:04:59 875人浏览 独家记忆
摘要

本篇内容主要讲解“设计模式系列之访问者模式的优点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“设计模式系列之访问者模式的优点有哪些”吧!基本介绍访问者模式

本篇内容主要讲解“设计模式系列之访问者模式的优点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“设计模式系列之访问者模式的优点有哪些”吧!

基本介绍

访问者模式的基本概念:封装一些作用于某种数据结构中元素上的操作。其有一个重要的特征是可以在不改变数据结构的前提下定义一些新的操作。

简单来说访问者模式主要的作用就是将“数据结构”和“数据操作”进行分离,解决这两者之间耦合性的问题。

访问者模式的基本执行原理就是在被访问的类里添加一个接口,用于接待访问者。

一般数情况下,当我们需要对一个数据结构中的元素进行很多不同的操作,并且这些操作彼此之间并没有关联,同时我们还想做到避免因为这些操作而“污染”了这些元素时,就可考虑使用访问者模式

访问者模式UML类图

设计模式系列之访问者模式的优点有哪些

类图讲解

Visitor:抽象访问角色;通常情况下该数据结构中有几个元素就会对应的在该类中为每一个元素提供一个访问操作(方法)。
ConcreteVisitor:具体访问者角色;继承了Visitor并实现了其中定义的所以方法。
Element:抽象元素角色;该类会定义一个accept(接收)方法,用于接收访问者。
ConcreteElement:具体元素角色;继承了Element并实现了其中定义的accept方法。
ObjectStruture:该类定义了数据结构(对象结构),管理了所有元素,并且可以枚举它的元素(也就是遍历)。

案例讲解

案例:开发一个员工审批功能,具体为不同角色的员工可以进行“同意”和“不同意”的审批。

抽象员工类 => 对应Element(抽象元素角色)

public abstract class Workers {    // 提供一个让访问者访问的方法   public abstract void accept(Action action);  }

具体员工类

 public class Manager extends Workers {       @Override   public void accept(Action action) {     action.managerVerify(this);   } }   public class GroupLeader extends Workers {    @Override   public void accept(Action action) {     action.groupLeaderVerify(this);   } }

抽象行为类 => 对应Visitor(抽象访问角色)

public abstract class Action {    // 经理进行审批   public abstract void managerVerify(Manager manager);    // 组长进行审批   public abstract void groupLeaderVerify(GroupLeader groupLeader);  }

具体行为类

 public class Agree extends Action {    @Override   public void managerVerify(Manager manager) {     System.out.println("经理的审核结果为同意!");   }    @Override   public void groupLeaderVerify(GroupLeader groupLeader) {     System.out.println("组长的审核结果为同意!");   } }   public class Disagree extends Action {    @Override   public void managerVerify(Manager manager) {     System.out.println("经理的审核结果为不同意!");   }    @Override   public void groupLeaderVerify(GroupLeader groupLeader) {     System.out.println("组长的审核结果为不同意!");   } }

ObjectStructure类

public class ObjectStructure {    // 维护了一个集合   private List<Workers> peoples = new ArrayList<>();    // 增加   public void attach(Workers workers) {     peoples.add(workers);   }    // 移除   public void detach(Workers workers) {     peoples.remove(workers);   }    // 显示测评情况   public void display(Action action) {     for (Workers people : peoples) {       people.accept(action);     }   } }

客户端测试类

public class Client {    public static void main(String[] args) {     ObjectStructure objectStructure = new ObjectStructure();     // 添加人     objectStructure.attach(new Manager());     objectStructure.attach(new GroupLeader());      // 同意     Agree agree = new Agree();     objectStructure.display(agree);   } }

执行结果

设计模式系列之访问者模式的优点有哪些

总结

优点:

1、访问者模式符合单一职责原则。
2、可以让数据结构和数据操作之间解耦。
3、避免了因为操作元素而对其造成污染的问题。
4、让程序具有扩展性的情况下还大大增加了灵活性。

缺点:

1、因为具体的元素对访问者公布了实现细节,所以访问者模式是违背了迪米特法则的。这样做会导致元素变化比较困难。
2、因为访问者依赖的是具体的元素而不是其抽象父类,所有该模式还违背了依赖倒转原则。

到此,相信大家对“设计模式系列之访问者模式的优点有哪些”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 设计模式系列之访问者模式的优点有哪些

本文链接: https://www.lsjlt.com/news/84340.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 设计模式系列之访问者模式的优点有哪些
    本篇内容主要讲解“设计模式系列之访问者模式的优点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“设计模式系列之访问者模式的优点有哪些”吧!基本介绍访问者模式...
    99+
    2024-04-02
  • Java设计模式之访问者模式
    大多数情况下你不需要访问者模式,但当一旦需要访问者模式时,那就是真的需要它了,这是设计模式创始人的原话。可以看出应用场景比较少,但需要它的时候是不可或缺的,这篇文章就开始学习最后一个...
    99+
    2022-11-13
    Java 设计模式 访问者模式
  • Java设计模式之java访问者模式详解
    目录介绍定义及使用场景UML类图角色财务案例个人心得体会静态分派以及动态分派静态分派动态分派访问者模式中的伪动态双分派 对访问者模式的一些思考总结优点缺点适用性参考文章总结介绍 ...
    99+
    2024-04-02
  • .Net行为型设计模式之访问者模式(Visitor)
    目录一、动机(Motivate)二、意图(Intent)三、结构图(Structure)四、模式的组成五、访问者模式的代码实现六、访问者模式的实现要点:(1)、访问者模式的主要优点有...
    99+
    2024-04-02
  • 深入理解Java设计模式之访问者模式
    目录一、什么是访问者模式二、访问者模式的结构三、访问者模式的使用场景四、访问者模式的优缺点五、访问者模式的实现总结一、什么是访问者模式 定义:表示一个作用于其对象结构中的各元素的操作...
    99+
    2024-04-02
  • HeadFirst设计模式有哪些优点
    1. 首先,HeadFirst设计模式通过生动有趣的方式介绍了设计模式的概念和原则,使得读者更容易理解和掌握设计模式。2. Head...
    99+
    2023-09-06
    HeadFirst
  • 设计模式系列之如何使用建造者模式
    这篇文章主要讲解了“设计模式系列之如何使用建造者模式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“设计模式系列之如何使用建造者模式”吧! 1、概述...
    99+
    2024-04-02
  • Python 设计模式行为型访问者模式
    目录一、访问者模式(Visitor Pattern)二、应用场景三、代码示例一、访问者模式(Visitor Pattern) 数据结构中保存着许多元素,当我们希望改变一种对元素的处理...
    99+
    2024-04-02
  • Java通俗易懂系列设计模式之观察者模式
    目录介绍观察者模式Java示例Java观察者模式类图适用场景介绍 观察者模式是行为设计模式之一。当您对对象的状态感兴趣并希望在有任何更改时收到通知时,观察者设计模式非常有用。在观察者...
    99+
    2024-04-02
  • Java通俗易懂系列设计模式之建造者模式
    目录介绍意图定义实例使用场景JDK中的Builder设计模式示例总结介绍 今天我们将研究java中的Builder模式。Builder 设计模式是一种创造性的设计模式,如工厂模式和抽...
    99+
    2024-04-02
  • java建造者模式的优点有哪些
    java建造者模式的优点有:1.独立性,建造者相对独立;2.易扩展性,符合开闭原则;3.便于控制,可以精细地控制产品的创建过程;java建造者模式的优点有以下几点独立性java建造者模式中每一个建造者都相对独立,可以方便地替换建造者或增加新...
    99+
    2024-04-02
  • Java设计模式之访问者模式使用场景及代码示例
    Java设计模式访问者模式模式概念访问者模式表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。访问者模式适用于数据结构相对稳定算法又易变化的系统,若系统数据结构对象易于变化,则不适合使用...
    99+
    2023-05-30
    java 访问者模式 ava
  • 设计模式系列之什么是桥接模式
    这篇文章主要介绍“设计模式系列之什么是桥接模式”,在日常操作中,相信很多人在设计模式系列之什么是桥接模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”设计模式系列之什么是桥接...
    99+
    2024-04-02
  • Java通俗易懂系列设计模式之模板模式
    目录介绍实现总结实际开发中常常会遇到,代码骨架类似甚至相同,只是具体的实现不一样的场景。例如:流程都有开启、编辑、驳回、结束。每个流程都包含这几个步骤,不同的是不同的流程实例它们的内...
    99+
    2024-04-02
  • HeadFirst设计模式有哪些特点
    Head First设计模式的特点包括以下几点:1. 以实例为主导:书中通过大量的实例来介绍和说明设计模式的概念和使用方法,帮助读者...
    99+
    2023-09-26
    HeadFirst
  • 怎么深入理解Java设计模式中的访问者模式
    怎么深入理解Java设计模式中的访问者模式,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、什么是访问者模式定义:表示一个作用于其对象结构中的各元素的操作,它使你可以在不改变各...
    99+
    2023-06-25
  • 设计模式系列之什么是解释器模式
    本篇内容主要讲解“设计模式系列之什么是解释器模式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“设计模式系列之什么是解释器模式”吧! 模式定义给分析对象...
    99+
    2024-04-02
  • 如何使用设计模式系列之单例模式
    这篇文章主要介绍“如何使用设计模式系列之单例模式”,在日常操作中,相信很多人在如何使用设计模式系列之单例模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用设计模式系列...
    99+
    2024-04-02
  • Java设计模式之中介者模式的实现方式
    目录介绍实现总结介绍 Java中介者模式(Mediator Pattern)是一种行为设计模式,它可以降低多个对象之间的耦合性,通过一个中介者对象来协调这些对象的交互. 在中介者模式...
    99+
    2023-05-18
    Java设计模式中介者模式 Java中介者模式
  • Java通俗易懂系列设计模式之策略模式
    目录介绍实例类图总结介绍 策略设计模式是行为设计模式之一。当我们为特定任务使用多个算法时,使用策略模式,客户端决定在运行时使用的实际实现。 策略模式的最佳示例之一是Collecti...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作