内容纲要
原型模式(Prototype Pattern)是一种创建型设计模式,它通过复制已有对象的实例来创建新对象,而不是通过调用构造函数。原型模式适用于创建成本高昂或复杂性较高的对象,复制已有实例可以节省资源并提高效率。
以下是一个简单的Java实现:
- 首先,创建一个实现了
Cloneable
接口的抽象原型类:
public abstract class Prototype implements Cloneable {
public abstract Prototype clone() throws CloneNotSupportedException;
}
- 创建具体原型类,实现抽象原型类:
public class ConcretePrototype extends Prototype {
private String field;
public ConcretePrototype(String field) {
this.field = field;
}
public void setField(String field) {
this.field = field;
}
public String getField() {
return field;
}
@Override
public Prototype clone() throws CloneNotSupportedException {
return (ConcretePrototype) super.clone();
}
}
- 使用原型模式创建对象:
public class Main {
public static void main(String[] args) {
ConcretePrototype prototype1 = new ConcretePrototype("Prototype1");
System.out.println("Original Prototype: " + prototype1.getField());
try {
ConcretePrototype prototype2 = (ConcretePrototype) prototype1.clone();
System.out.println("Cloned Prototype: " + prototype2.getField());
prototype2.setField("Prototype2");
System.out.println("Modified Cloned Prototype: " + prototype2.getField());
System.out.println("Original Prototype after modification: " + prototype1.getField());
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
}
运行上述代码,你将看到:
Original Prototype: Prototype1
Cloned Prototype: Prototype1
Modified Cloned Prototype: Prototype2
Original Prototype after modification: Prototype1
这个示例展示了如何使用原型模式复制一个对象。请注意,在复制过程中,原始对象保持不变。这种模式特别适用于创建成本高昂或复杂性较高的对象,因为通过复制已有实例可以节省资源并提高效率。