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

强化网站建设和监管新乡网站优化公司价格

强化网站建设和监管,新乡网站优化公司价格,做网站那里好,上海网络推广访问者模式是什么? 表示一个作用于某对象结构中的各元素的操作,它使你可以再不改变各元素的类的前提下定义作用于这些元素的新操作 访问者模式解决什么问题? 男女在不同情境下表现的不同 abstract class Person {protected String action…

访问者模式是什么?

表示一个作用于某对象结构中的各元素的操作,它使你可以再不改变各元素的类的前提下定义作用于这些元素的新操作

访问者模式解决什么问题?

男女在不同情境下表现的不同

abstract class Person {protected String action;public String getAction() {return action;}public void setAction(String action) {this.action = action;}public abstract void getConclusion();
}class Man extends Person {@Overridepublic void getConclusion() {if ("逛街".equals(action)) {System.out.println(this.getClass().getSimpleName() + action + "买完就走");} else if ("吃饭".equals(action)) {System.out.println(this.getClass().getSimpleName() + action + "狼吞虎咽");}}
}class Woman extends Person {@Overridepublic void getConclusion() {if ("逛街".equals(action)) {System.out.println(this.getClass().getSimpleName() + action + "到处乱逛");} else if ("吃饭".equals(action)) {System.out.println(this.getClass().getSimpleName() + action + "细嚼慢咽");}}
}

使用时

List<Person> personList = new ArrayList<>();Man man = new Man();
man.setAction("逛街");
personList.add(man);Woman woMan = new Woman();
woMan.setAction("逛街");
personList.add(woMan);for (Person person : personList) {person.getConclusion();
}

当要新增新的Action时,要修改两者的代码

访问者模式实现

创建不同的表现

abstract class Action {abstract void getManConclusion(Man concreteElementA);abstract void getWomanConclusion(Woman concreteElementB);
}class Shopping extends Action {@Overridevoid getManConclusion(Man concreteElementA) {System.out.println(concreteElementA.getClass().getSimpleName() + " " + getClass().getSimpleName() + "买完就走");}@Overridevoid getWomanConclusion(Woman concreteElementB) {System.out.println(concreteElementB.getClass().getSimpleName() + " " + getClass().getSimpleName() + "到处乱逛");}
}class eat extends Action {@Overridevoid getManConclusion(Man concreteElementA) {System.out.println(concreteElementA.getClass().getSimpleName() + " " + getClass().getSimpleName() + "狼吞虎咽");}@Overridevoid getWomanConclusion(Woman concreteElementB) {System.out.println(concreteElementB.getClass().getSimpleName() + " " + getClass().getSimpleName() + "细嚼慢咽");}
}

创建男女,这里采用双分派,先将Action作为传递给男/女,再将男/女作为参数传入给Action,意味着执行结果取决于两个调用者的类型

abstract class Person {abstract void accept(Action visitor);
}class Man extends Person {@Overridevoid accept(Action visitor) {visitor.getManConclusion(this);}
}class Woman extends Person {@Overridevoid accept(Action visitor) {visitor.getWomanConclusion(this);}
}

创建对象结构统一管理和遍历

class ObjStructure {private List<Person> mPersonList = new ArrayList<>();public void attach(Person person) {mPersonList.add(person);}public void detach(Person person) {mPersonList.remove(person);}public void display(Action visitor) {for (Person person : mPersonList) {person.accept(visitor);}}
}

调用时

 ObjStructure objStructure = new ObjStructure();objStructure.attach(new Man());objStructure.attach(new Woman());objStructure.display(new Shopping());objStructure.display(new eat());
  • 当要增加Action时,只需要新增一个类和修改上面的代码
  • 但是如果新增一个外星人的话,就要在每个Action中新增对应方法,故访问者模式适用于数据结构稳定但算法易变化的情况
http://www.tj-hxxt.cn/news/90201.html

相关文章:

  • 微信头像做国旗网站深圳百度推广代理
  • 这样做网站线上营销手段有哪些
  • 网站内容建设方案营销qq
  • 如何韩国视频网站模板下载 迅雷下载地址白酒营销策划方案
  • 电子商务与网站建设实践论文bt种子搜索
  • dedecms学校网站在线数据分析网站
  • wordpress太强大广州seo推广服务
  • 网站建设岗位职责百度指数疫情
  • 网站做可信认证多少钱南昌seo优化公司
  • 用自己的电脑做网站需要备案吗百度热搜排名
  • 可视化网站建设平台重庆seo推广外包
  • 怎么学php网站开发网站查询站长工具
  • 定陶网站建设搜索引擎优化心得体会
  • 网站定制公司排行榜海淀seo搜索引擎优化公司
  • 网站制作难吗百度贴吧网页版登录
  • 简单做网站广告公司招聘
  • 网站公司 转型个人博客
  • dw做购物网站seo优化设计
  • 做网站需要学php吗短视频营销案例
  • 商丘集团网站建设关键词优化搜索排名
  • 美国做调研的网站上海网站营销推广
  • 做衬衫的网站在哪个网站可以免费做广告
  • 做平台的网站有哪些功能吗怎么设置自己的网站
  • 做网站前端需要编程基础吗网站建设合同
  • wordpress系统语言设置中文长沙网站优化指导
  • wordpress 子分类seo外链推广
  • 做淘宝要网站?昆明百度推广优化
  • 网站开发用哪个框架西安seo外包优化
  • 全球做网站最好黄冈seo
  • 网络推广理论做网站好不好湖北seo整站优化