IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java进阶-设计模式-访问者模式,mysql索引优化面试题 -> 正文阅读

[Java知识库]Java进阶-设计模式-访问者模式,mysql索引优化面试题

package com.home.test.visitor.userInfo;

public class GreenCodePerson implements Person{

private String userName;

private String userPhone;

private String cardNo;

private String address;

// 疫苗

private String vaccine;

@Override

public void accept(Department department) {

department.visit(this);

}

public GreenCodePerson(String userName, String userPhone, String cardNo, String address, String vaccine) {

this.userName = userName;

this.userPhone = userPhone;

this.cardNo = cardNo;

this.address = address;

this.vaccine = vaccine;

}

public String getUserName() {

return userName;

}

public String getUserPhone() {

return userPhone;

}

public String getCardNo() {

return cardNo;

}

public String getAddress() {

return address;

}

public String getVaccine() {

return vaccine;

}

}

复制代码

定义访问者部门接口:

public interface Department {

void visit(RedCodePerson person);

void visit(GreenCodePerson person);

}

复制代码

定义医院部门访问实现类:

package com.home.test.visitor.userInfo;

public class DocDepartment implements Department {

@Override

public void visit(RedCodePerson person) {

System.out.printf(“红码人员:%s,手机号:%s,疫苗接种情况:%s,开始隔离!%n”,

person.getUserName(),

person.getUserPhone(),

person.getAddress());

}

@Override

public void visit(GreenCodePerson person) {

System.out.printf(“绿码人员:%s,手机号:%s,疫苗接种情况:%s,放回家.%n”,

person.getUserName(),

person.getUserPhone(),

person.getVaccine());

}

}

复制代码

定义乡镇访问实现类:

package com.home.test.visitor.userInfo;

/**

  • 乡镇获取权限: 姓名、手机号、接种情况、地址、身份证号

*/

public class VillageDepartment implements Department {

@Override

public void visit(RedCodePerson person) {

System.out.printf(“红码人员:%s,手机号:%s,身份证号:%s,地址:%s,请及时排查密接人员!%n”,

person.getUserName(),

person.getUserPhone(),

person.getCardNo(),

person.getAddress());

}

@Override

public void visit(GreenCodePerson person) {

System.out.printf(“绿码人员:%s,手机号:%s,身份证号:%s,疫苗接种情况:%s,”,

person.getUserName(),

person.getUserPhone(),

person.getCardNo(),

person.getVaccine());

if ((“未接种”).equals(person.getVaccine())) {

System.out.println(“请及时通知该人员接种疫苗”);

} else {

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

System.out.println(“请提醒多喝热水.”);

}

}

}

复制代码

定义测试Demo:

package com.home.test.visitor.userInfo;

import java.util.ArrayList;

import java.util.List;

public class ClientDemo {

public static void main(String[] args) {

List personList = new ArrayList() {{

add(new GreenCodePerson(“Job”, “13188880000”, “866111”, “New Work”, “未接种”));

add(new GreenCodePerson(“Job2”, “13188889999”, “866112”, “New Work”, “未接种”));

add(new GreenCodePerson(“Job3”, “13200000000”, “866113”, “New Work”, “已接种”));

add(new RedCodePerson(“李富贵”, “13200000001”, “866114”, “New Work”));

}};

System.out.println("------------------------医院权限查看------------------------");

DocDepartment docDepartment = new DocDepartment();

personList.forEach(person -> person.accept(docDepartment));

System.out.println("------------------------乡镇部门权限查看------------------------");

VillageDepartment villageDepartment = new VillageDepartment();

personList.forEach(person -> person.accept(villageDepartment));

}

}

复制代码

输出结果:

------------------------医院权限查看------------------------

绿码人员:Job,手机号:13188880000,疫苗接种情况:未接种,放回家.

绿码人员:Job2,手机号:13188889999,疫苗接种情况:未接种,放回家.

绿码人员:Job3,手机号:13200000000,疫苗接种情况:已接种,放回家.

红码人员:李富贵,手机号:13200000001,疫苗接种情况:New Work,开始隔离!

------------------------乡镇部门权限查看------------------------

绿码人员:Job,手机号:13188880000,身份证号:866111,疫苗接种情况:未接种,请及时通知该人员接种疫苗

绿码人员:Job2,手机号:13188889999,身份证号:866112,疫苗接种情况:未接种,请及时通知该人员接种疫苗

绿码人员:Job3,手机号:13200000000,身份证号:866113,疫苗接种情况:已接种,请提醒多喝热水.

红码人员:李富贵,手机号:13200000001,身份证号:866114,地址:New Work,请及时排查密接人员!

复制代码

说明

访问者模式属于行为设计模式的一种,当我们要对一组相似类型的对象执行操作的时候使用它。

访问者模式的帮助下,我们可以将操作逻辑从对象移动到另一个类。

访问者模式由两部分组成:

一个名为 Visit() 的方法,由访问者实现,并为数据结构中的每个元素调用

提供接受访问者的 Accept() 方法的可访问类

如下UML图:

Blank diagram.png

如何学习访问者模式


刚学访问者模式的时候,我也很是费解,因为在下的理解能力有限

我擦泪.jpg

那怎么办呢,敲代码,多找一些访问者模式的博客,看上面的例子.

不要复制粘贴, 不然你很容易错过细节.细节很细,你忍一下.

同时,不要去害怕它.一天不行就两天,每天抽出那么点时间来,去敲一个访问者模式的例子.

然后尝试着去自己写一个例子,再去写一些总结.

最后,在看一些概念性的东西.这也是为啥要把说明放后面的原因.

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-19 18:23:31  更:2021-12-19 18:24:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:55:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码