超详细超实用!!!AI编程之cursor编写设计模式开闭原则实例(四)

云风网
云风笔记
云风知识库

一、设计模式开闭原则定义

当应用的需求改变时,在不修改软件实体(项目模块、类、接口方法)的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。即软件实体应当对扩展开放,对修改关闭

二 、原则作用
1、对软件测试的影响

软件遵守开闭原则的话,软件测试时只需要对扩展的代码进行测试就可以了,因为原有的测试代码仍然能够正常运行。

2、可以提高代码的可复用性

粒度越小,被复用的可能性就越大;在面向对象的程序设计中,根据原子和抽象编程可以提高代码的可复用性。

3、可以提高软件的可维护性

遵守开闭原则的软件,其稳定性高和延续性强,从而易于扩展和维护。

三、原则实现实例
1、新建main.java空白文件,cursor输入指令


2、自动生成代码以及文件
2.1、Main.java代码如下:
javascript 复制代码
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        Rectangle rectangle = new Rectangle(5, 10);
        Circle circle = new Circle(7);

        List<Shape> shapes = Arrays.asList(rectangle, circle);

        AreaCalculator calculator = new AreaCalculator();
        double totalArea = calculator.calculateTotalArea(shapes);

        System.out.println("Total area of shapes: " + totalArea);
    }
}
2.2、Shape.java接口定义方法代码如下:

Shape 接口定义了一个计算面积的方法。

javascript 复制代码
public interface Shape {
    double calculateArea();
}
2.3、Rectangle.java矩形计算面积类代码如下:
javascript 复制代码
public class Rectangle implements Shape {
    private double width;
    private double height;

    public Rectangle(double width, double height) {
        this.width = width;
        this.height = height;
    }

    @Override
    public double calculateArea() {
        return width * height;
    }
}
2.4、Circle.java方形计算圆面积类代码如下:
javascript 复制代码
public class Circle implements Shape {
    private double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

    @Override
    public double calculateArea() {
        return Math.PI * radius * radius;
    }
}
2.5、AreaCalculator类代码如下:

AreaCalculator 类可以计算任何实现了 Shape 接口的对象的面积总和

javascript 复制代码
import java.util.List;

public class AreaCalculator {
    public double calculateTotalArea(List<Shape> shapes) {
        double totalArea = 0;
        for (Shape shape : shapes) {
            totalArea += shape.calculateArea();
        }
        return totalArea;
    }
}
3、运行主程序输出

这个输出是矩形(5 10 = 50)和圆(π 7^2 ≈ 153.54)的面积之和。

这个设计是对扩展开放的(我们可以轻松添加新的形状),同时对修改是关闭的(添加新形状不需要修改现有的代码)。

这个例子展示了如何使用接口和多态性来实现开闭原则,允许我们在不修改现有代码的情况下扩展系统的功能。

相关推荐
来让爷抱一个9 分钟前
MonkeyCode Agent深度解析:AI如何自主完成从编码到部署
开源·ai编程·monkeycode
阿伟AI说20 分钟前
Codex 桌面版接入国产模型系列二:Codex++
java·开源软件·ai编程·腾讯云ai代码助手
hoaxxcj40 分钟前
AI编程2026:Copilot桌面应用发布,我们正在经历一场不可逆的范式转移
copilot·agent·ai编程·github copilot·编程工具
这个DBA有点耶40 分钟前
Vibe Coding 是什么?当“感觉编程”遇上数据库
数据库·人工智能·架构·学习方法·ai编程·程序员创富·改行学it
测试开发技术42 分钟前
AI 测试赋能全流程实战 | Agent Skill + AI 赋能「需求分析」
自动化测试·人工智能·自动化·需求分析·ai编程·ai测试
财经资讯数据_灵砚智能1 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年6月12日
人工智能·python·ai·信息可视化·自然语言处理·ai编程·灵砚智能
甲维斯3 小时前
真不想吹Claude Fable了,奈何实力不允许!
人工智能·ai编程·游戏开发
aqi003 小时前
15天学会AI应用开发(六)使用离线大模型对文本生成摘要
人工智能·python·ai编程
知识浅谈3 小时前
人工智能日报 每日AI新闻(2026年6月12日):Agent安全、AI编程与国内高考场景加速落地
人工智能·安全·ai编程
麦哲思科技任甲林3 小时前
让AI帮我们写工作日志
人工智能·ai编程·日志