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

做网站的app有什么作用珠海百度关键字优化

做网站的app有什么作用,珠海百度关键字优化,外贸网站开发公司,淮南发布访问者模式(Visitor Pattern) 定义 访问者模式(Visitor Pattern) 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。 该模式的主要思想是将作用于某种数据结构中的各…

访问者模式(Visitor Pattern)

定义

访问者模式(Visitor Pattern)
表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。

该模式的主要思想是将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使得可以在不改变数据结构的前提下添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。

属于行为型模式。


适用场景

  1. 数据结构稳定,作用于数据结构的操作经常发生变化的场景;
  2. 需要数据结构与数据操作分离的场景;
  3. 需要对不同数据类型(元素)进行操作,而不使用分支判断具体类型的场景。

标准示例

  • Visitor(抽象访问者):定义一个访问具体元素的接口,该接口内部包含了对所有具体元素的访问方法。
  • ConcreteVisitor(具体访问者):实现Visitor接口,针对特定类型的元素执行具体访问操作。
  • Element(抽象元素):定义一个接受访问操作的接口,通常包含一个accept()方法,该方法接收一个访问者对象作为参数。
  • ConcreteElement(具体元素):实现了Element接口,存储了实际的数据,并提供接受访问者访问的方法实现。
  • ObjectStructure(对象结构):管理元素的集合,通常包含add、remove等方法以及一个遍历所有元素的accept()方法,该方法接收一个访问者对象作为参数,并遍历所有元素,让每个元素接受访问者的访问。
    在这里插入图片描述
    代码:
public interface IVisitor {void visit(ConcreteElementA element);void visit(ConcreteElementB element);
}
public class ConcreteVisitorA implements IVisitor {public void visit(ConcreteElementA element) {String result = element.operationA();System.out.println( element.getClass().getSimpleName() + " : " + result);}public void visit(ConcreteElementB element) {int result = element.operationB();System.out.println( element.getClass().getSimpleName() + ": " + result);}
}
public class ConcreteVisitorB implements IVisitor {public void visit(ConcreteElementA element) {String result = element.operationA();System.out.println(element.getClass().getSimpleName() + ": " + result);}public void visit(ConcreteElementB element) {int result = element.operationB();System.out.println( element.getClass().getSimpleName() + ": " + result);}
}
public interface IElement {void accept(IVisitor visitor);
}
public class ConcreteElementA implements IElement {public void accept(IVisitor visitor) {visitor.visit(this);}public String operationA() {return this.getClass().getSimpleName();}}
public class ConcreteElementB implements IElement {public void accept(IVisitor visitor) {visitor.visit(this);}public int operationB() {return new Random().nextInt(10);}
}
public class ObjectStructure {private List<IElement> list = new ArrayList<IElement>();{this.list.add(new ConcreteElementA());this.list.add(new ConcreteElementB());}public void accept(IVisitor visitor) {for (IElement element : this.list) {element.accept(visitor);}}
}
public class Test {public static void main(String[] args) {ObjectStructure objectStructure = new ObjectStructure();	IVisitor visitorA = new ConcreteVisitorA();objectStructure.accept(visitorA);System.out.println("***************************************");IVisitor visitorB = new ConcreteVisitorB();objectStructure.accept(visitorB);}}

输出结果:

ConcreteElementA: ConcreteElementA
ConcreteElementB: 5
***************************************
ConcreteElementA: ConcreteElementA
ConcreteElementB: 4

以上就是访问者模式全部内容,感谢阅读!

http://www.sczhlp.com/news/79278/

相关文章:

  • 鲁谷做网站的公司华容县住房和城乡建设局网站
  • 做转运网站品牌网站响应式网站有哪些
  • seo在线优化网站软件设计开发流程图
  • 网站屏蔽搜索引擎可以申请微信号的网站
  • 制做商品网站手术室专科建设网站
  • 行情软件app网站大全下载全球搜索引擎
  • 网站页面代码优化wordpress取消邮箱
  • 设计精美的中文网站一天一元网站建设
  • 代理游戏网站中文单页面网站模板免费下载
  • 安徽元鼎建设工程网站广州 骏域网站建设 陶瓷
  • 网站推广工具有网站建设实训的方法
  • seo网站优化推广怎么样镇江网站建设价位
  • 网站有源码之后怎么建设网站用jsp做的网站的代码
  • 佛山做外贸网站渠道网站怎么做seo优化啊
  • wordpress add termseo在线优化系统
  • ROS2-时间模块
  • 如何查询网站备案进度师德师风建设网站
  • 建网站浩森宇特做网站卖东西送上门
  • 怎么在.Net中做团购网站南山做网站教程
  • 荣成市有做网站的吗恩施网页定制
  • 视频网站用什么做的好处wordpress freeradius
  • 企业网站后台内容如何修改wordpress文章浏览次数统计代码
  • 网站加载慢微信电脑版下载官网
  • 北京哪里有网站建设设计微信 公司网站 怎么做
  • 网站开发定制合同范本个旧做网站哪家公司好
  • 做网站 域名如何要回wordpress资源占用
  • 做教育培训网站需要资质么网站国内服务器租用
  • 网站制作哪家实惠搜索百度下载安装
  • 做会计应关注什么网站手机网站菜单设计模板
  • jsp.ajax网站开发典型实例营销型网站建设的五力原则包括