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

无锡万度网站建设适合夜里看的php

无锡万度网站建设,适合夜里看的php,广告图片怎么制作,做的网站图片不显示访问者模式是一种行为设计模式#xff0c;它允许你定义在对象结构中的元素上进行操作的新操作#xff0c;而无需修改这些元素的类。这种模式的主要思想是将算法与元素的结构分离开#xff0c;使得可以在不修改元素结构的情况下定义新的操作。 所谓算法与元素结构分离#x…访问者模式是一种行为设计模式它允许你定义在对象结构中的元素上进行操作的新操作而无需修改这些元素的类。这种模式的主要思想是将算法与元素的结构分离开使得可以在不修改元素结构的情况下定义新的操作。 所谓算法与元素结构分离即保持元素被访问对象结构的稳定而将算法置于访问者之中因为访问者可以新建这样就符合了OCP开闭原则。 在访问者模式中有两个主要的角色 访问者Visitor 定义了在对象结构中访问元素时的新操作接口。通常会有多个不同的访问者每个访问者实现一组特定的操作。 元素Element 定义了接受访问者的接口通常会有多个不同的元素每个元素实现了接口并提供了接受访问者的方法。 访问者模式的主要优势在于当需要在一组对象上执行一些复杂的操作时你可以通过添加新的访问者而不是修改每个元素的类来扩展系统。 类图 时序图 下面是一个简单的 Java 示例演示了访问者模式的基本结构 // 访问者接口 interface Visitor {void visit(ElementA elementA);void visit(ElementB elementB); }// 元素接口 interface Element {void accept(Visitor visitor); }// 具体的元素A class ElementA implements Element {Overridepublic void accept(Visitor visitor) {visitor.visit(this);}// 元素A的特定操作void operationA() {System.out.println(Performing operation A on ElementA);} }// 具体的元素B class ElementB implements Element {Overridepublic void accept(Visitor visitor) {visitor.visit(this);}// 元素B的特定操作void operationB() {System.out.println(Performing operation B on ElementB);} }// 具体的访问者 class ConcreteVisitor implements Visitor {Overridepublic void visit(ElementA elementA) {elementA.operationA();}Overridepublic void visit(ElementB elementB) {elementB.operationB();} }// 客户端代码 public class VisitorPatternExample {public static void main(String[] args) {Element elementA new ElementA();Element elementB new ElementB();Visitor visitor new ConcreteVisitor();elementA.accept(visitor); // 执行 ElementA 的操作elementB.accept(visitor); // 执行 ElementB 的操作} }在这个例子中Visitor 接口定义了两个访问方法每个方法对应一个具体的元素。Element 接口定义了接受访问者的方法。具体的元素类 ElementA 和 ElementB 实现了 Element 接口并分别实现了自己的特定操作。ConcreteVisitor 是一个具体的访问者类实现了对每个元素的访问操作。 在客户端代码中我们创建了一个 ConcreteVisitor 实例并让每个元素接受这个访问者。换言之是在Client中操作了访问者与元素的连接印证了类图。这样通过不同的访问者我们可以执行不同的操作而不需要修改元素的类。这是访问者模式的一种简单示例实际中可能涉及更复杂的场景和多个元素。 怎么定义新的操作 当使用访问者模式时定义新的操作就是创建新的实现了访问者接口的具体访问者类。每个具体访问者类负责实现一组特定的操作而这些操作可以是全新的、与原有操作不相关的或者是对现有操作的扩展。 举个例子假设我们有一个图形结构包括圆形Circle和矩形Rectangle两种图形。现在我们希望实现两种不同的操作计算图形的面积和计算图形的周长。 首先定义图形接口和具体的图形类 // 图形接口 interface Shape {void accept(Visitor visitor); }// 圆形类 class Circle implements Shape {private double radius;public Circle(double radius) {this.radius radius;}public double getRadius() {return radius;}Overridepublic void accept(Visitor visitor) {visitor.visit(this);} }// 矩形类 class Rectangle implements Shape {private double width;private double height;public Rectangle(double width, double height) {this.width width;this.height height;}public double getWidth() {return width;}public double getHeight() {return height;}Overridepublic void accept(Visitor visitor) {visitor.visit(this);} }然后定义访问者接口和具体的访问者类 // 访问者接口 interface Visitor {void visit(Circle circle);void visit(Rectangle rectangle); }// 计算面积的具体访问者类 class AreaCalculator implements Visitor {Overridepublic void visit(Circle circle) {double area Math.PI * circle.getRadius() * circle.getRadius();System.out.println(Area of Circle: area);}Overridepublic void visit(Rectangle rectangle) {double area rectangle.getWidth() * rectangle.getHeight();System.out.println(Area of Rectangle: area);} }// 计算周长的具体访问者类 class PerimeterCalculator implements Visitor {Overridepublic void visit(Circle circle) {double perimeter 2 * Math.PI * circle.getRadius();System.out.println(Perimeter of Circle: perimeter);}Overridepublic void visit(Rectangle rectangle) {double perimeter 2 * (rectangle.getWidth() rectangle.getHeight());System.out.println(Perimeter of Rectangle: perimeter);} }现在我们可以在不修改图形类的情况下定义新的操作。例如创建了两个具体的访问者类 AreaCalculator 和 PerimeterCalculator 分别用于计算图形的面积和周长。在客户端代码中我们可以通过接受不同的访问者来执行不同的操作 public class VisitorExample {public static void main(String[] args) {Shape circle new Circle(5);Shape rectangle new Rectangle(4, 6);Visitor areaCalculator new AreaCalculator();Visitor perimeterCalculator new PerimeterCalculator();circle.accept(areaCalculator); // 计算圆形的面积circle.accept(perimeterCalculator); // 计算圆形的周长rectangle.accept(areaCalculator); // 计算矩形的面积rectangle.accept(perimeterCalculator); // 计算矩形的周长} }这样通过定义不同的访问者我们可以轻松地扩展系统而无需修改图形类的结构。 结论 访问者模式很好地实现了访问算法的开放与被访问元素的封闭有这种需求时就可以考虑使用访问者模式。
http://www.dnsts.com.cn/news/166096.html

相关文章:

  • 哪些公司做外贸网站好小学生有没有必要学编程
  • 苏州网站推广哪家好新农村建设在哪个网站申请
  • 思行做网站营销网站建设 公司
  • wordpress网站图片加载速度慢秦皇岛手机网站制作公司
  • 做网站有多砸钱dede网站正在维护中应该怎样设置
  • 培训中心网站建设论文工业设计是冷门专业吗
  • 站长平台怎么添加网站云南网站建设企业推荐
  • 自己做网站卖什么网站开发毕业设计中期检查表
  • 怎么通过建站来赚钱标智客免费logo设计
  • 河北搜恒不给做网站广西住建局官方网站
  • 网站建设哪里便宜网站建设需求计划
  • 绍兴做网站选哪家wordpress修改自己的头像
  • 电商网站后台建设公司网站制作费用多少
  • 申请好域名后怎么建设网站烟台微网站
  • 淄博微信网站建设医院有关页面设计模板
  • wordpress 加相关文章镇江做网站seo
  • 合肥庐阳区建设局网站郑州短视频培训机构
  • 微网站开发方案模板网站开发企业培训报名
  • 傻瓜式做网站哪个软件好阿里云主机怎么做两个网站吗
  • 湖北省和住房建设厅官方网站网站建设技术支持牛商网
  • 奉化网站建设eclipse 网站开发
  • 电影网站怎么做不犯法哈尔滨网站建设制作哪家便宜
  • 甘孜州建设局网站注册域名之后如何做网站
  • 中国机械加工网19易0下6拉en苏州seo安严博客
  • php网站开发软件语言珠海做网站专业公司
  • 工信部网站备案怎么登录中国建设工程安全协会网站
  • 大佛寺广州网站代码交易网站
  • 如何做自己网站云播win7怎么重新安装wordpress
  • 建设诚信网站商城推广软文范文
  • 公司搭建网站服务毕业室内设计代做网站