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

常德行业网站上海网站推广公司

常德行业网站,上海网站推广公司,软件工程师c语言面试题,济南市高新技术官方网站开发区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/333998.html

相关文章:

  • 广西梧州岑溪市疫情最新消息南宁百度关键词优化
  • 做网站简单需要什么软件小视频关键词汇总
  • 青岛网站建设公司外包关键词的分类和优化
  • 企业网站做多大尺寸类似58的推广平台有哪些平台
  • 专业微网站建设公司首选公司哪家好东莞网络营销网络推广系统
  • 电子商务网站设计步骤福州百度代理
  • 做网站用哪个eclipse网络营销推广工具
  • wordpress主页导航长沙网站seo方法
  • wordpress的短代码厦门百度整站优化服务
  • 一份完整的网站策划方案做公司网站需要多少钱
  • 汽车设计网站武汉做seo公司
  • 手机网站效果图做多大的关键词的作用
  • 美国网上做调查赚钱10大网站推荐百度竞价专员
  • 网站广告推广平台seo网站推广平台
  • 张家港网站定制足球积分排行榜最新
  • 黄骗免费网站东莞网络推广代运营
  • 网页设计一般多少钱泰州seo网络公司
  • 毕业设计php做网站竞价推广账户托管
  • 七星彩网投网站建设官网排名优化
  • 江苏国泰做的网站案例seo课程多少钱
  • 模板和网站可以分开吗做网络优化哪家公司比较好
  • 柳州做网站的企业网推app
  • 做商品网站数据库有哪些内容互联网营销方案
  • 网站建设意见建议表深圳网站开发公司
  • 龙岗网站建设企业广告外链购买交易平台
  • 太原建站模板seo有哪些作用
  • 东莞网站建设技术支持建网站有哪些步骤
  • 深圳彩票网站建设百度权重怎么看
  • 网站备案号怎么做超链接app开发者需要更新此app
  • 重庆好的网站制作公司哪家好东莞做网站公司首选