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

京东网站谁建设营销型网站名词解释

京东网站谁建设,营销型网站名词解释,成都旅游酒店推荐,公司文化建设的意义目录 访问者模式的定义 访问者模式的实现 访问者模式角色 访问者模式类图 访问者模式举例 访问者模式代码实现 访问者模式的特点 优点 缺点 使用场景 注意事项 实际应用 访问者模式的定义 访问者模式#xff08;Visitor Pattern#xff09;属于行为型设计模式Visitor Pattern属于行为型设计模式它允许在不修改现有对象结构的前提下定义对这些对象执行操作的新操作。访问者模式将数据结构和操作分离使得操作可以独立变化。 访问者模式基本思想是针对系统中拥有固定类型数的对象结构元素在其内提供一个 accept()方法来接受访问者对象的访问。不同的访问者对同一个元素的访问内容是不同使得相同的元素集合可以产生不同的数据结果。 访问者模式的实现 访问者模式角色 抽象访问者角色Visitor接口或者抽象类为该对象结构中具体元素角色声明一个访问操作接口。该操作接口的名字和参数标识了发送访问请求给具体访问者的具体元素角色这样访问者就可以通过该元素角色的特定接口直接访问它。具体访问者角色ConcreteVisitor实现Visitor声明的接口是每个操作实现的部分。抽象元素角色Element接口或者抽象类该类定义了一个接受访问者访问的方法 accept()方法表示所有元素类型都支持被访问者访问。具体元素角色ConcreteElement具体元素类型实现了抽象元素(Element)所定义的接受操作接口。结构对象角色ObjectStructure该类内部维护了元素集合并提供方法接受访问者对该集合所有元素进行操作。它具备以下特性能枚举它的元素可以提供一个高层接口以允许访问者访问它的元素如有需要可以设计成一个复合对象或者一个聚集如一个列表或无序集合。 访问者模式类图 访问者模式举例 访问者模式代码实现 抽象访问者角色 package com.common.demo.pattern.visitor;/*** author Evan Walker 昂焱数据: https://www.ayshuju.com* version 1.0* desc 抽象访问者角色 * date 2023/08/09 21:48:44*/ public interface ComputerPartVisitor {void visit(ComputerHost computerHost);void visit(Mouse mouse);void visit(Keyboard keyboard);void visit(Monitor monitor); }具体访问者角色 package com.common.demo.pattern.visitor;/*** author Evan Walker 昂焱数据: https://www.ayshuju.com* version 1.0* desc 实体访问者角色 计算机部件显示访问者* date 2023/08/09 21:54:19*/ public class ComputerPartDisplayVisitor implements ComputerPartVisitor{Overridepublic void visit(ComputerHost computerHost) {System.out.println(Displaying Computer.);}Overridepublic void visit(Mouse mouse) {System.out.println(Displaying Mouse.);}Overridepublic void visit(Keyboard keyboard) {System.out.println(Displaying Keyboard.);}Overridepublic void visit(Monitor monitor) {System.out.println(Displaying Monitor.);} }抽象元素角色 package com.common.demo.pattern.visitor;/*** author Evan Walker 昂焱数据: https://www.ayshuju.com* version 1.0* desc 抽象元素角色 计算机组成部分* date 2023/08/09 21:47:18*/ public interface ComputerPart {void accept(ComputerPartVisitor computerPartVisitor); }具体元素角色 package com.common.demo.pattern.visitor;/*** author Evan Walker 昂焱数据: https://www.ayshuju.com* version 1.0* desc 具体元素角色 电脑主机* date 2023/08/09 21:50:15*/ public class ComputerHost implements ComputerPart {Overridepublic void accept(ComputerPartVisitor computerPartVisitor) {computerPartVisitor.visit(this);} } package com.common.demo.pattern.visitor;/*** author Evan Walker 昂焱数据: https://www.ayshuju.com* version 1.0* desc 具体元素角色 键盘* date 2023/08/09 21:50:15*/ public class Keyboard implements ComputerPart {Overridepublic void accept(ComputerPartVisitor computerPartVisitor) {computerPartVisitor.visit(this);} } package com.common.demo.pattern.visitor;/*** author Evan Walker 昂焱数据: https://www.ayshuju.com* version 1.0* desc 具体元素角色 显示器* date 2023/08/09 21:50:15*/ public class Monitor implements ComputerPart {Overridepublic void accept(ComputerPartVisitor computerPartVisitor) {computerPartVisitor.visit(this);} } package com.common.demo.pattern.visitor;/*** author Evan Walker 昂焱数据: https://www.ayshuju.com* version 1.0* desc 具体元素角色 鼠标* date 2023/08/09 21:50:15*/ public class Mouse implements ComputerPart {Overridepublic void accept(ComputerPartVisitor computerPartVisitor) {computerPartVisitor.visit(this);} }结构对象角色 package com.common.demo.pattern.visitor;import java.util.ArrayList; import java.util.List;/*** author Evan Walker 昂焱数据: https://www.ayshuju.com* version 1.0* desc 结构对象角色 电脑* date 2023/08/09 21:50:15*/ public class Computer{private ListComputerPart employeeList new ArrayList();{employeeList.add(new ComputerHost());employeeList.add(new Keyboard());employeeList.add(new Monitor());employeeList.add(new Mouse());}//遍历public void showReport(ComputerPartVisitor visitor){for (ComputerPart computerPart : this.employeeList) {computerPart.accept(visitor);}} } 测试代码 package com.common.demo.pattern.visitor;/*** author Evan Walker 昂焱数据: https://www.ayshuju.com* version 1.0* desc 测试代码* date 2023/08/09 22:00:44*/ public class Test {public static void main(String[] args) {Computer computer new Computer();computer.showReport(new ComputerPartDisplayVisitor());}}测试截图 访问者模式的特点 优点 增加新的操作更容易通过访问者模式可以在不修改现有对象结构的情况下增加新的操作符合开闭原则。将相关操作集中到一个访问者类中访问者模式将相关操作封装在一个访问者类中使得代码更加结构化和清晰。扩展性强由于访问者模式将数据结构和操作解耦因此可以方便地添加新的数据结构和操作扩展性强。解耦性解耦了数据结构与数据操作使得操作集合可以独立变化。 缺点 增加新的元素类困难当需要增加新的元素类时需要同时修改访问者接口和所有的具体访问者类可能导致修改的范围较大。违反了单一职责原则访问者模式将相关操作集中到访问者类中可能导致该类承担过多的责任违反单一职责原则。违背依赖倒置原则访问者角色依赖的是具体元素类型而不是抽象。 使用场景 当需要对一组对象执行多种不同且不相关的操作时可以考虑使用访问者模式。数据结构稳定数据结构与数据操作分离作用于数据结构的操作经常变化的场景。 注意事项 对象结构稳定在使用访问者模式时对象结构应该是相对稳定的避免频繁修改对象结构否则会导致访问者接口和具体访问者类的修改范围较大。具体元素类的扩展如果需要频繁添加新的元素类可能会增加访问者接口和具体访问者类的修改工作量需要谨慎设计。 实际应用 编译器的语法树分析编译器可以使用访问者模式来遍历语法树对不同类型的节点执行不同的操作。数据结构的序列化对于复杂的数据结构可以使用访问者模式来实现序列化操作将对象转换为特定格式的字符串或字节流。 更多消息资讯请访问昂焱数据https://www.ayshuju.com
http://www.hkea.cn/news/14573125/

相关文章:

  • 淮安网站建设多少钱网站建设过程中要怎么打开速度
  • 做网站和做软件一样吗做外贸怎样免费登录外国网站
  • 酒泉网站建设公司深圳做网站的大公司
  • 公司建网站多少钱一个月用哪个软件制作网页
  • 做网站服务器多少钱腾讯云做网站需要报备
  • 产业协会建设网站方案信息流广告案例
  • 建设信用卡网站首页做网站一定要用cms
  • 寮步网站建设极致发烧h5移动端网站开发
  • 网站建设意识形态网站的详情页面设计
  • 惠州网站建设技术支持国内网站制作欣赏
  • 建立网站邮箱企业邮箱注册申请需要多少钱
  • 宝塔面板建设二级域名网站访问不了WordPress老文章提示
  • 凡科建站的应用场景四川省工程建设信息网站
  • 政务网站开发北京哪家做网站好
  • 租号网站怎么做优化大师怎么下载
  • 全球搜 建设网站公司取名字
  • 成立门户网站建设工作小组上海招聘网官网
  • dedecms学校网站模板华强北电子网站建设
  • 嵊州市建设银行网站文创设计
  • 罗琳做的网站温州瓯北做网站
  • 餐厅网站模板装饰设计公司起名
  • 主动创新网站内容建设沈阳 网站建设
  • 网站平台建设需求的意见深圳知名室内设计公司
  • 做网站对服务器什么要求高网站图片批量上传
  • 郑州网站建设流程北京市保障性住建设投资中心网站
  • 盐城网站优化公司深圳企业管理咨询公司
  • 软件开发费和网站建设做外贸网站需要注意什么
  • 石景山网站建设公司哪个好榆次做网站
  • 潍坊市奎文区建设局网站wordpress演示数据库
  • 烟台h5网站制作古镇灯饰网站建设服务