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

女孩做网站运营好吗百度关键词seo年度费用

女孩做网站运营好吗,百度关键词seo年度费用,潍坊网络运营公司,浙江建设职业继续教育学院网站访问者模式是什么? 表示一个作用于某对象结构中的各元素的操作,它使你可以再不改变各元素的类的前提下定义作用于这些元素的新操作 访问者模式解决什么问题? 男女在不同情境下表现的不同 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.ds6.com.cn/news/104208.html

相关文章:

  • 用word做旅游网站写软文的平台有哪些
  • 可以做软件的网站有哪些内容吗大数据营销平台那么多
  • 做网站的伪原创怎么弄常州百度推广代理
  • wordpress上传到阿里云seo 360
  • 海外销售工作难做吗seo引擎优化外包
  • 有没有什么东西可以做网站创建网站的基本步骤
  • 怎么做网站建设赚钱互联网项目推广平台有哪些
  • 公司网站可以不买域名吗怎么做好公司官网推广
  • 如何设计好酒店网站模板网站信息查询
  • 网站做防御广东互联网网络营销推广
  • 福州品牌网站建设oem手机如何制作网页
  • 毕业设计 网站开发简单吗百度推广效果怎么样
  • 找合伙做网站的手机端网站排名
  • 深圳做网站公司有哪些今日新闻头条内容
  • 小米路由器做网站seo哪里可以学
  • 想在网上做设计接单有没有网站自己如何做链接推广
  • 手机导航网站模板2022年免费云服务器
  • 做网站最专业的公司域名查询系统
  • 网站建设教程自学网申请一个网站需要多少钱
  • 淮安做网站seo中国十大知名网站
  • 本溪网站制作公司网络推广排名定制
  • 已备案个人网站做淘宝客百度竞价怎么收费
  • 大型自适应的网站开发企业网站制作开发
  • 精选南昌网站建设公司软文推广案例
  • 广西住房和城乡建设厅培训seo的优化方案
  • 外包网络安全技术措施网站优化推广培训
  • 大学网站建设与管理职责百度下载安装2021
  • 土耳其网站后缀短视频剪辑培训班多少钱
  • 小地方的旅游网站怎么做百度账号中心官网
  • 济南做网站推广有哪些公司我想做电商怎么加入