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

温州外贸网站建设无忧网站

温州外贸网站建设,无忧网站,番禺网站优化,国家工信部网站备案什么是访问者模式 访问者模式提供了一个作用于某对象结构中的各元素的操作表示#xff0c;他使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。     访问者模式主要包含以下几个角色#xff1a;         Vistor(抽象访问者)#xff1a;为对象结…什么是访问者模式 访问者模式提供了一个作用于某对象结构中的各元素的操作表示他使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。     访问者模式主要包含以下几个角色         Vistor(抽象访问者)为对象结构中每一个具体元素类声明一个访问操作从这个操作的名称或参数类型可以清楚的知道需要访问的具体元素类型具体访问者需要实现这些操作方法定义对这些元素的访问操作。         ConcreteVistor(具体访问者)实现了每一个由抽象访问者声明的操作每一个操作用于访问对象结构中一种类型的元素。         Element(抽象元素)一般是抽象类或接口定义了一个由抽象访问者作为参数的方法。         ConcreteElement(具体元素)实现了抽象元素中的方法在该方法中调用访问者的访问方法以完成一个元素的操作。         ObjectStructure(对象结构)是一个元素的集合用于存放元素对象并且提供了遍历集合的方法。 访问者模式的优缺点 优点 增加新的访问者很方便无需修改源代码符合开闭原则。将有关元素对象的访问行为集中到一个访问者中有利于对象结构中元素对象的复用。可以在不修改现有元素层次结构的前提下定义作用于该层次结构的操作。 缺点 增加新的元素类很困难每增加一个元素类都要在抽象访问者角色中增加一个新的抽象操作并在具体访问者类中增加相应的具体操作违背了开闭原则。破坏了封装访问者对象需要访问并调用每一个元素对象的操作这意味着元素对象有时候必须暴露一些自己的内部操作和状态。 访问者模式的应用场景 一个对象结构包含多个类型的对象希望对这些对象的具体类型做一些操作。需要对一个对象结构中的对象进行很多不同的并且不相关的操作。对象结构中对象对应的类很少改变经常需要在对象结构中定义新的操作。 访问者模式的案例 // 抽象访问者 public abstract class Action {/*** 得到男性 的测评** param man man*/public abstract void getManResult(Man man);/*** 得到女的 测评** param woman woman*/public abstract void getWomanResult(Woman woman); }// 具体访问者 public class Success extends Action {Overridepublic void getManResult(Man man) {System.out.println( 男人给的评价该歌手很成功 !);}Overridepublic void getWomanResult(Woman woman) {System.out.println( 女人给的评价该歌手很成功 !);}}public class Wait extends Action {Overridepublic void getManResult(Man man) {System.out.println( 男人给的评价是该歌手待定 ..);}Overridepublic void getWomanResult(Woman woman) {System.out.println( 女人给的评价是该歌手待定 ..);}}public class Fail extends Action {Overridepublic void getManResult(Man man) {System.out.println( 男人给的评价该歌手失败 !);}Overridepublic void getWomanResult(Woman woman) {System.out.println( 女人给的评价该歌手失败 !);}}// 抽象元素 public abstract class Person {public abstract void accept(Action action);}// 具体元素 public class Man extends Person {Overridepublic void accept(Action action) {action.getManResult(this);}}public class Woman extends Person {Overridepublic void accept(Action action) {action.getWomanResult(this);}}// 对象结构 public class ObjectStructure {private final ListPerson persons new LinkedList();public void attach(Person p) {persons.add(p);}public void detach(Person p) {persons.remove(p);}public void display(Action action) {for (Person p : persons) {p.accept(action);}} }public static void main(String[] args) {//创建ObjectStructureObjectStructure objectStructure new ObjectStructure();objectStructure.attach(new Man());objectStructure.attach(new Woman());//成功Success success new Success();objectStructure.display(success);System.out.println();Fail fail new Fail();objectStructure.display(fail);System.out.println(给的是待定的测评);Wait wait new Wait();objectStructure.display(wait); }
http://www.tj-hxxt.cn/news/232005.html

相关文章:

  • 手机网站模板制作教程电商sem是什么意思
  • 图片上传网站制作做创意礼品定制的网站
  • 网站开发摊销期海报设计手绘
  • 响应式网站用什么软件做效果长春住房和城乡建设部官方网站
  • wap网站建设策划方案10_10_设计公司网站设计
  • 做展板好的网站国外做的比较的ppt网站有哪些
  • 金融网站建设方案360网站怎么做ppt
  • 景点购票网站开发pos网站源码
  • 比选三家网站建设公司wordpress iot
  • 网站可以做哪些广告语官方网站焊工证查询
  • php手机网站制作手机软件怎么制作
  • 网站的建设目标是什么哪个网站做加盟
  • 网站建设 wordpress系统长清做网站公司
  • 便宜网站建设公司九天利建公司简介
  • 做网站 0元代理小红书的网络营销方法
  • 网站开发用哪种语言办事处网站建设
  • 代理分佣后台网站开发做爰网站下载地址
  • 我国哪些网站是做调查问卷的网站开发 技术架构
  • 学做家常菜去那个网站网站 橙色
  • 网站建设与开发试题与答案微信小商店分销功能
  • 展示型网站建设公司python编程软件有哪些
  • 旅游网站开发外文翻译江西建设工程质量管理网站
  • 经典网站首页乐清网络公司哪家好
  • 提供做网站动漫设计与制作实训报告
  • 有人做网站推广吗宁波最新发布
  • 外贸wordpress收款插件发不了软文的网站怎么做关键词优化
  • 做电商网站需要的证深圳非凡网站建设公司
  • 仿牌网站流量建设银行儿童网站
  • 福州专业建站wordpress网站加密码破解
  • 如何建一个简单的网站泰州市建设工程招标网