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

厦门市建设局电工报名网站网站列表页模板

厦门市建设局电工报名网站,网站列表页模板,怎么建设个人网站教程,石家庄网站建设与推广定义 表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变元素的类的前提下定义作用与这些元素的新操作。 模式动机 对于存储在一个集合中的对象,他们可能具有不同的类型(即使有一个公共的接口),对于该集合中的对象&#xff0…

定义

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

模式动机

  • 对于存储在一个集合中的对象,他们可能具有不同的类型(即使有一个公共的接口),对于该集合中的对象,可以接受一类称为访问者的对象来访问,不同的访问者其访问方式也有所不同。

访问者模式角色

  • 抽象访问者: 一般通过visit方法声明可以访问哪写元素;
  • 具体访问者: 实现抽象访问者。访问元素的内容;
  • 抽象元素: 需要被访问的对象。一般有一个accept方法接受访问者方法;
  • 具体元素: 实现了抽象元素。在accept方法中调用访问者的visit方法;

开发中常见的场景

  • XML文挡解释器设计
  • 编译器的设计
  • 复杂集合对象的处理

总结

  • 访问者模式是GOF23种设计模式中最复杂的一种设计模式,一般在工作中不会使用访问者设计模式,也尽量不要使用访问者设计模式;如果用到了访问者设计模式,那就是必须要使用访问者设计模式啦。

代码实现

  • 抽象访问者
/*** 抽象访问者*/
public interface Visitor {void visit(ManElement manElement);void visit(WomanElement womanElement);
}
  • 具体访问者
/*** 具体访问者NameVisitor*/
public class NameVisitor implements Visitor {@Overridepublic void visit(ManElement manElement) {System.out.println("名称:"+manElement.getName());}@Overridepublic void visit(WomanElement womanElement) {System.out.println("名称:"+womanElement.getName());}
}
/*** 具体访问者GenderVisitor*/
public class GenderVisitor implements Visitor {@Overridepublic void visit(ManElement manElement) {System.out.println("性别:男");}@Overridepublic void visit(WomanElement womanElement) {System.out.println("性别:女");}
}
/*** 具体访问者AgeVisitor*/
public class AgeVisitor implements Visitor {@Overridepublic void visit(ManElement manElement) {System.out.println("年龄:"+manElement.getAge());}@Overridepublic void visit(WomanElement womanElement) {System.out.println("年龄:"+womanElement.getAge());}
}
  • 抽象元素
/*** 抽象元素*/
public interface Element {void accept(Visitor visitor);}
  • 具体元素
/*** 人*/
public interface Person {String getName();Boolean isMan();Integer getAge();
}
/*** 具体元素ManElement */
public class ManElement implements Person, Element{private String name;private Boolean isMan = true;private Integer age;public ManElement() {}public ManElement(String name, Integer age) {super();this.name = name;this.age = age;}@Overridepublic void accept(Visitor visitor) {visitor.visit(this);}@Overridepublic String getName() {return name;}@Overridepublic Boolean isMan() {return isMan;}@Overridepublic Integer getAge() {return age;}public Boolean getIsMan() {return isMan;}public void setName(String name) {this.name = name;}public void setAge(Integer age) {this.age = age;}
}
/*** 具体元素WomanElement */
public class WomanElement implements Person,Element{private String name;private Boolean isMan = false;private Integer age;@Overridepublic void accept(Visitor visitor) {visitor.visit(this);}public WomanElement() {}public WomanElement(String name, Integer age) {super();this.name = name;this.age = age;}@Overridepublic String getName() {return name;}@Overridepublic Boolean isMan() {return isMan;}@Overridepublic Integer getAge() {return age;}public Boolean getIsMan() {return isMan;}public void setName(String name) {this.name = name;}public void setAge(Integer age) {this.age = age;}
}
  • 客户端调用
public static void main(String[] args) {ManElement manElement = new ManElement("张三", 30);WomanElement womanElement = new WomanElement("翠花", 18);List<Element> elements = new ArrayList<>();elements.add(manElement);elements.add(womanElement);NameVisitor nameVisitor = new NameVisitor();GenderVisitor genderVisitor = new GenderVisitor();AgeVisitor ageVisitor = new AgeVisitor();for (Element element : elements) {element.accept(nameVisitor);element.accept(genderVisitor);element.accept(ageVisitor);}
}



更多设计模式学习:

          设计模式(1):介绍
          设计模式(2):单例模式
          设计模式(3):工厂模式
          设计模式(4):建造者模式
          设计模式(5):原型模式
          设计模式(6):桥接模式
          设计模式(7):装饰器模式
          设计模式(8):组合模式
          设计模式(9):外观模式
          设计模式(10):享元模式
          设计模式(11):适配器模式
          设计模式(12):代理模式
          设计模式(13):模板方法模式
          设计模式(14):命令模式
          设计模式(15):迭代器模式
          设计模式(16):观察者模式
          设计模式(17):中介者模式
          设计模式(18):状态模式
          设计模式(19):策略模式
          设计模式(20):责任链模式
          设计模式(21):备忘录模式
          设计模式(22):解释器模式
          设计模式(23):访问者模式

http://www.yayakq.cn/news/47299/

相关文章:

  • 快速网站备案wordpress与织梦
  • 网站建设需求说明书紫金网站建设公司
  • 企业手机网站设计案例快看点自媒体平台注册入口和下载
  • 公司网站建设完成通知您网站建设
  • 苏州教育学会网站建设怎么把自己做的网站
  • 免费询盘网站怎么让网站排名下降
  • 赣州开发区网站建设做网站图片要求高吗
  • 网站排名所以关键词下降婚恋网站模板下载
  • 深圳网站空间购买汕头关键词排名
  • 重庆网站建设公司名单重庆做网站推广
  • 重庆网站备案成都企业品牌网站建设
  • 大型网站开发用什么技术品牌logo设计图片
  • seo优化推广网站seo标准
  • 网站开发怎么找客户WordPress留言表单仿制
  • 柯桥网站建设哪家好_绍兴市场推广_非凡分类信息教育局网站建设管理工作意见
  • 青岛制作网站网站建设基础培训
  • 房屋设计装修网站幕墙设计培训乡网站建设
  • 建网站服务器系统交换链接名词解释
  • 网站建设公司信科网络网站seo是什么意
  • 啥也不懂怎么建设网站兼职做效果图的网站有哪些
  • 旅游电子商务与网站建设开发网站的意义
  • 杭州做购物网站江门专业制作网站
  • 免费的素材网站推荐企业管理软件都有哪些
  • m版网站开发淮南网格员招聘
  • 宁波网站制作公司中国空间站对接成功
  • 郑州营销型网站设计运营网站设计专家
  • 3免费做网站免费自助建站平台系统
  • 做旅游网站的原因莱芜信息港
  • 腾讯专门做数据标注的网站是招聘信息设计
  • 浅析淘宝网站的建设与运营论文品牌建设与诚信建设相结合