Java 原型模式:二维空间圆 Circle 深克隆实现全解析
以下是使用 Java 实现原型模式来对具有原点 `Point` 和半径 `r` 的二维空间的圆 `Circle` 进行深克隆的示例代码: ```java import java.lang.CloneNotSupportedException; class Point implements Cloneable { private int x; private int y; public Point(int x, int y) { this.x = x; this.y = y; } public int getX() { return x; } public int getY() { return y; } @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); } } class Circle implements Cloneable { private Point origin; private int radius; public Circle(Point origin, int radius) { this.origin = origin; this.radius = radius; } public Point getOrigin() { return origin; } public int getRadius() { return radius; } @Override protected Object clone() throws CloneNotSupportedException { Circle clone = (Circle) super.clone(); clone.origin = (Point) origin.clone(); return clone; } } public class PrototypePatternExample { public static void main(String[] args) throws CloneNotSupportedException { Point origin = new Point(10, 20); Circle circle = new Circle(origin, 5); Circle clonedCircle = (Circle) circle.clone(); // 修改原始圆的原点坐标 circle.getOrigin().setX(50); System.out.println("原始圆的原点坐标: (" + circle.getOrigin().getX() + ", " + circle.getOrigin().getY() + ")"); System.out.println("克隆圆的原点坐标: (" + clonedCircle.getOrigin().getX() + ", " + clonedCircle.getOrigin().getY() + ")"); } } ``` 在上述代码中,`Point` 类和 `Circle` 类都实现了 `Cloneable` 接口,并在 `clone` 方法中实现了深克隆的逻辑。对于 `Circle` 类,不仅自身要克隆,其内部的 `Point` 对象也要进行克隆,以实现深克隆的效果。 ######[AI写代码神器 | 519点数解答 | 2024-11-10 15:35:40]
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)438
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)337
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1232
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)383
- HTML 基本页面代码分析:如何改进简单无序列表(字节豆包 | 118点数解答 | 2024-12-25 17:14:21)266
- 简单 HTML 页面优化指南:丰富无序列表与页面内容(字节豆包 | 116点数解答 | 2024-12-25 17:14:24)215
- 从简单 HTML 代码到功能丰富页面:一个无序列表的改进秘籍(字节豆包 | 147点数解答 | 2024-12-25 17:14:26)233
- Golang开发:解析JSON数据时数值默认类型及示例解析(百度文心 | 393点数解答 | 2023-11-09 18:13:06)312
- SQL Working Areas Sizing: Manual vs. Automatic Policy - A Comprehensive Analysis(阿里通义 | 530点数解答 | 2024-05-13 10:55:58)331
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)352
- "Java Code: Uncovering Stock Statistics through CSV File Reading"(字节豆包 | 66点数解答 | 2024-11-13 15:31:04)347
- Java实现形状继承与多态,计算周长和面积(字节豆包 | 1577点数解答 | 2026-05-08 19:13:24)4