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

网站建设学习哪家专业桂林象鼻山地址

网站建设学习哪家专业,桂林象鼻山地址,网络规划设计师是高级职称吗,拉新推广渠道访问者模式是一种行为设计模式,它允许您在不修改对象结构的情况下,向对象结构中的元素添加新的操作。这通常用于解决对象结构中元素类型多变,但操作类型相对稳定的问题。在访问者模式中,我们有一个访问者接口和多个具体的元素类&a…

访问者模式是一种行为设计模式,它允许您在不修改对象结构的情况下,向对象结构中的元素添加新的操作。这通常用于解决对象结构中元素类型多变,但操作类型相对稳定的问题。在访问者模式中,我们有一个访问者接口和多个具体的元素类,每个元素类都可以接受访问者的访问。以下是在 Java 中实现访问者模式的一般步骤:

  1. 创建一个访问者接口(Visitor):该接口定义了对不同元素执行的访问操作。

  2. 创建多个具体元素类(ConcreteElement):这些类表示对象结构中的不同元素,并实现了接受访问者访问的方法。

  3. 创建一个对象结构类(ObjectStructure):这个类维护一个元素的集合,并允许访问者访问这些元素。

  4. 创建具体访问者类(ConcreteVisitor):这些类实现了访问者接口,并定义了对具体元素的访问操作。

现在,让我们通过一个示例来实现访问者模式。假设我们有一个图形(Shape)类层次结构,包括圆形(Circle)和矩形(Rectangle)等不同的形状,并且我们希望能够计算它们的面积和周长:

// 步骤 1: 创建访问者接口
interface ShapeVisitor {void visitCircle(Circle circle);void visitRectangle(Rectangle rectangle);
}// 步骤 2: 创建具体元素类
abstract class Shape {abstract void accept(ShapeVisitor visitor);
}class Circle extends Shape {private double radius;public Circle(double radius) {this.radius = radius;}public double getRadius() {return radius;}@Overridevoid accept(ShapeVisitor visitor) {visitor.visitCircle(this);}
}class Rectangle extends 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;}@Overridevoid accept(ShapeVisitor visitor) {visitor.visitRectangle(this);}
}// 步骤 3: 创建对象结构类
class Drawing {private List<Shape> shapes = new ArrayList<>();public void addShape(Shape shape) {shapes.add(shape);}public void accept(ShapeVisitor visitor) {for (Shape shape : shapes) {shape.accept(visitor);}}
}// 步骤 4: 创建具体访问者类
class AreaCalculator implements ShapeVisitor {private double totalArea = 0;@Overridepublic void visitCircle(Circle circle) {double area = Math.PI * circle.getRadius() * circle.getRadius();totalArea += area;}@Overridepublic void visitRectangle(Rectangle rectangle) {double area = rectangle.getWidth() * rectangle.getHeight();totalArea += area;}public double getTotalArea() {return totalArea;}
}class PerimeterCalculator implements ShapeVisitor {private double totalPerimeter = 0;@Overridepublic void visitCircle(Circle circle) {double perimeter = 2 * Math.PI * circle.getRadius();totalPerimeter += perimeter;}@Overridepublic void visitRectangle(Rectangle rectangle) {double perimeter = 2 * (rectangle.getWidth() + rectangle.getHeight());totalPerimeter += perimeter;}public double getTotalPerimeter() {return totalPerimeter;}
}// 示例
public class Main {public static void main(String[] args) {Drawing drawing = new Drawing();drawing.addShape(new Circle(5.0));drawing.addShape(new Rectangle(3.0, 4.0));AreaCalculator areaCalculator = new AreaCalculator();drawing.accept(areaCalculator);System.out.println("总面积:" + areaCalculator.getTotalArea());PerimeterCalculator perimeterCalculator = new PerimeterCalculator();drawing.accept(perimeterCalculator);System.out.println("总周长:" + perimeterCalculator.getTotalPerimeter());}
}

在这个示例中,我们定义了一个访问者接口 ShapeVisitor,然后创建了具体元素类 CircleRectangle,它们都实现了 accept 方法以接受访问者。对象结构类 Drawing 维护了一个形状列表,并允许访问者访问这些形状。我们还创建了两个具体访问者类 AreaCalculatorPerimeterCalculator,分别用于计算形状的面积和周长。

通过访问者模式,我们可以轻松地添加新的访问者来执行不同的操作,而无需修改现有的元素类。这使得代码更加灵活和可维护。

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

相关文章:

  • 做网站简介wordpress 栏目 伪静态化
  • 彭州建设网站潍坊网站制作建设
  • 门设计的网站建设张家港网站开发培训广告代理
  • 苏州自助模板建站烟台网站seo外包
  • 正宗营销型网站建设成都建站网站模板
  • 想转行做网站苏州网站建设联系苏州梦易行
  • 跟业务合作做网站给多少提成网站怎么记录搜索引擎的关键词
  • 手机可以看的网站wordpress仿堆糖网
  • 做网页代码的素材网站张家界seo优化首选
  • 专业手机网站有哪些wordpress建app
  • 网站建设中模板成都住建局官网全生命周期
  • 扬州网站建设开发胶州市 网站建设
  • 统一门户网站明星设计网站风格说明
  • 设计网站大概多少钱中国河北建设银行官网招聘网站
  • 银川网站公司wordpress 删除页眉
  • 做网站需要会写代码6个人网站制作在线
  • dede cms 网站模板成都网站建设询q479185700霸屏
  • 网站模板拍卖物流网站开发策划
  • 代理注册公司网站模版成都商务网站建设
  • 购物网站建设的可行性杭州做网站hzyze
  • 江津网站建设公司仿锤子 wordpress
  • 湖北省建设厅官方网站证书查询设计网站多少钱
  • 公司做网站之前要准备什么东莞网站建设找谁
  • 国外虚拟物品交易网站店铺代运营服务
  • 校园网站开发设计报告工业设计是学什么
  • 建设网站计划书中企动力 联系方式
  • 手机移动端网站开发河间网站建
  • 怎么样查询网站被挂黑链营销网站开发哪家好
  • node.js网站开发框架Wordpress调用搜索
  • php调用wordpress函数seo优化总结