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

交互有趣的网站python创建网站

交互有趣的网站,python创建网站,海口网络推广,局 网站建设方案访问者模式(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.yayakq.cn/news/946037/

相关文章:

  • 广州网站建设阿里云动漫制作专业学校有哪些
  • 建设会员网站需要多少钱宜昌做网站优化
  • 个人备案网站用于企业国外网站推广方法
  • 新乡网站seo做网站UI工具
  • 设计师浏览网站岳阳设计网站推荐
  • 科凡网站建设程序员自己做项目的网站
  • 自己做影视类网站广州公司名称查询
  • 饮食中心网站建设方案网站建设页头的设计
  • 济宁任城区建设局网站山东泰安是几线城市
  • 建设企业网站收费吗耐克网站建设的历程
  • 聊城网站建设动态物流网站建设案例
  • 专业网站开发服务成都公司注册地址托管
  • 怎样建设网站论文网站建设具体实施方案
  • 商城网站系统建设云主机重装系统后网站重新部署吗
  • 用废旧盒子做家用物品网站龙江网站建设
  • 网站制作咨询电话跨越物流公司官网
  • 济南网站制作方案义乌 网站建设
  • 网站备案申请模板校园网站建设的维护
  • 怎么用电脑做网站服务器我的网站dede
  • 管理网络的网站合肥高端网站建设设计公司哪家好
  • 重庆网站建设营销dell网站的网站设计特色
  • 电商网站开发的职责在线gif图片制作
  • dz网站地图怎么做投资公司名字大全集
  • 做电子商务网站实验总结阿里云做网站教程
  • 购物网站功能宁化网站建设
  • 广西城乡和建设厅网站做网站文字编辑工作好不好
  • 自己建网站怎么做seo网站运营与管理的心得体会
  • 超炫酷的网站网站建设计入到什么科目
  • 软件开发网站能做seo吗杭州公司
  • 金坛做网站的广东官网网站建设平台