当前位置: 首页 > wzjs >正文

常德行业网站教育培训排行榜前十名

常德行业网站,教育培训排行榜前十名,生成手机网站,长沙网站建设流程16.访问者模式 一.什么是访问者模式 封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下,定义作用于这些元素的新操作。 二、角色 (1) Vistor(抽象访问者):为该对象结构中具体元素角色…

16.访问者模式

一.什么是访问者模式
封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下,定义作用于这些元素的新操作。

二、角色

  • (1) Vistor(抽象访问者):为该对象结构中具体元素角色声明一个访问操作接口。
  • (2) ConcreteVisitor(具体访问者):每个具体访问者都实现了Vistor中定义的操作。
  • (3) Element(抽象元素):定义了一个accept操作,以Visitor作为参数。
  • (4) ConcreteElement(具体元素):实现了Element中的accept()方法,调用Vistor的访问方法以便完成对一个元素的操作。
  • (5) ObjectStructure(对象结构):可以是组合模式,也可以是集合;能够枚举它包含的元素;提供一个接口,允许Vistor访问它的元素。

三、代码
1、抽象访问者

public interface Tasker {void visitZhuang(ZhuangHero zhuangHero);void visitZhen(ZhenHero zhenHero);
}

2、具体访问者1

public class MyTasker implements Tasker {@Overridepublic void visitZhuang(ZhuangHero zhuangHero) {System.out.println("我访问了庄周,庄周释放技能");zhuangHero.operate();}@Overridepublic void visitZhen(ZhenHero zhenHero) {System.out.println("我访问了甄姬,甄姬释放技能");zhenHero.operate();}
}具体访问者2
public class OtherTasker implements Tasker {@Overridepublic void visitZhuang(ZhuangHero zhuangHero) {System.out.println("其他人访问庄周,庄周开始使出技能");zhuangHero.operate();}@Overridepublic void visitZhen(ZhenHero zhenHero) {System.out.println("其他人访问甄姬,庄周开始使出技能");zhenHero.operate();}
}

3、抽象元素

public abstract class Hero {public abstract void accept(Tasker tasker);
}

4、具体元素(1)

@Data
@NoArgsConstructor
public class ZhenHero extends Hero {@Overridepublic void accept(Tasker tasker) {tasker.visitZhen(this);}public void operate(){System.out.println("甄姬释放出技能");}
}

具体元素(2)

@NoArgsConstructor
@Data
public class ZhuangHero extends Hero {@Overridepublic void accept(Tasker tasker) {tasker.visitZhuang(this);}public void operate(){System.out.println("庄周释放出技能");}
}

5.对象结构

public class ObjectStructure {private List<Hero> heroList = new ArrayList<>();public void handleRequest(Tasker tasker){for (Hero hero : heroList) {hero.accept(tasker);}}public void addHero(Hero hero){heroList.add(hero);}}

6.测试类

public class VisitorTest {public static void main(String[] args) {ObjectStructure objectStructure = new ObjectStructure();Hero zhuangHero = new ZhuangHero();Hero zhenHero = new ZhenHero();objectStructure.addHero(zhuangHero);objectStructure.addHero(zhenHero);Tasker myTasker = new MyTasker();Tasker otherTasker = new OtherTasker();objectStructure.handleRequest(myTasker);objectStructure.handleRequest(otherTasker);}
}
http://www.dtcms.com/wzjs/522928.html

相关文章:

  • php手机网站开发教程朝阳区搜索优化seosem
  • 域名备案通过后怎么做网站南通做网站推广的公司
  • 网站新闻审核怎么做seo外链优化方法
  • php新手网站开发查关键词排名网
  • 深圳招聘网官网班级优化大师下载安装
  • 网站开发怎么挣外快5118营销大数据
  • 怎么创建一个视频网站郑州网络营销推广公司
  • 专门做加盟的网站免费私人网站建设平台
  • 一般网站建设的流程图全能优化大师
  • 最好的网站代运营公司seo教程优化
  • 成交型网站建设价格谷歌seo是什么意思
  • 深圳市城乡住房和建设局网站首页百度新闻网站
  • 公司想做个自己的网站怎么做的宁波正规seo快速排名公司
  • 二手房网站谁做的更好电商培训机构哪家好
  • 专业做毕业设计网站设计外贸网站推广平台
  • 网建服务最优化方法
  • 查询一个网站是用什么系统做的怎么学做电商然后自己创业
  • 网站建设公司推荐万维科技西安网站托管
  • 福州做网站需要多少钱网店推广软文范例
  • 做音乐网站需要版权么公司网站建设要多少钱
  • 校园文化建设图片网站广告代理商
  • 普陀区网站建设公司网站seo外链建设
  • 做个网站app吗近期新闻事件
  • 快速搭建网站 开源网络媒体有哪些
  • 嘉兴外贸网站建设谷歌优化
  • 在哪做网站专业seo排名推广工具
  • 工业设计企业系统优化软件哪个好
  • 想做交友网站怎么做模板网站建设开发
  • 优惠券的网站怎么做百度知道一下
  • 做一个营销型网站seo站长综合查询