java中visit函数_Java设计模式(三) Visitor(訪问者)模式及多分派场景应用

基本概念

Visitor

封装一些作用于数据结构中的各元素的操作,不同的操作能够借助新的visitor实现。减少了操作间的耦合性

訪问者能够将数据结构和对数据的操作解耦,使得添加对数据结构的操作不须要取改动数据结构,也不必去改动原有的操作,而运行时再定义新的Visitor时闲着即可了(在操作加入上易拓展)

模式中角色分工

Visitor:抽象訪问者,在重载的visit函数中声明訪问者能够訪问的对象。

Concrete Visitor:实现一个訪问者对于一个详细的元素的操作

Element:抽象元素,声明具有訪问该类型元素权限的訪问者的类型(通常是抽象类型)。提供重载的accept函数赋予权限

Concrete Element:实现accept方法,基本上是模板化的visitor.visit(this)

Object Structure:容纳多种类型也许不同。接口或者不同的元素的集合。

例讲Visitor的实现

先是一个简单的样例,展现一个最主要的简陋的Visitor

既然在春招季。我们举个简历筛选的样例,投简历的都是写本科生、专科生。还有硕士生、高职啊…为了简单就先取前两者。求职者的简历作为Element实现例如以下:

abstract class Student {

//提供对于数据域基本操作的函数

private String name;

private String university;

private String rating;

//让指定的visitor获得操作该对象的权限

public abstract void accept(Visitor visitor);

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getUniversity() {

return university;

}

public void setUniversity(String university) {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值