java 原型模式示例
时间: 2023-09-02 18:05:51 浏览: 51
Java中原型模式是一种创建型设计模式,它可以在运行时动态地创建对象。这种模式通过克隆已有的对象来创建新的对象,并且不需要通过构造函数来创建对象。下面是一个简单的示例,展示了如何实现原型模式。
首先,我们需要创建一个实现Cloneable接口的原型类。
```java
public class Circle implements Cloneable {
private int x;
private int y;
private int radius;
public Circle(int x, int y, int radius) {
this.x = x;
this.y = y;
this.radius = radius;
}
public void setX(int x) {
this.x = x;
}
public void setY(int y) {
this.y = y;
}
public void setRadius(int radius) {
this.radius = radius;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public int getRadius() {
return radius;
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
@Override
public String toString() {
return "Circle{" +
"x=" + x +
", y=" + y +
", radius=" + radius +
'}';
}
}
```
在这个示例中,我们创建了一个Circle类,它包含了x、y和radius等属性。这个类实现了Cloneable接口,并重写了clone()方法。
接下来,我们可以在客户端代码中使用原型模式创建新的对象。
```java
public class Client {
public static void main(String[] args) throws CloneNotSupportedException {
Circle circle1 = new Circle(1, 2, 3);
Circle circle2 = (Circle) circle1.clone();
System.out.println("Circle 1: " + circle1);
System.out.println("Circle 2: " + circle2);
circle2.setX(4);
circle2.setY(5);
circle2.setRadius(6);
System.out.println("Circle 1: " + circle1);
System.out.println("Circle 2: " + circle2);
}
}
```
在这个示例中,我们首先创建了一个Circle对象(circle1),然后通过clone()方法创建了另一个Circle对象(circle2)。然后我们修改了circle2的属性,但是circle1的属性没有被影响到。
输出结果如下:
```
Circle 1: Circle{x=1, y=2, radius=3}
Circle 2: Circle{x=1, y=2, radius=3}
Circle 1: Circle{x=1, y=2, radius=3}
Circle 2: Circle{x=4, y=5, radius=6}
```
这个示例展示了如何使用原型模式创建新的对象。通过克隆已有的对象,我们可以在运行时动态地创建新的对象,并且不需要通过构造函数来创建对象。