以下是使用Java编写原型模式(Prototype)的示例代码:
// 原型基类
abstract class Prototype {
public abstract void clone();
}
// 具体原型类
class ConcretePrototypeA extends Prototype {
private String value;
public ConcretePrototypeA() {
this.value = "A";
}
@Override
public void clone() {
ConcretePrototypeA clone = (ConcretePrototypeA) super.clone();
clone.value = "Cloned " + this.value;
return clone;
}
public String getValue() {
return value;
}
}
class ConcretePrototypeB extends Prototype {
private String value;
public ConcretePrototypeB() {
this.value = "B";
}
@Override
public void clone() {
ConcretePrototypeB clone = (ConcretePrototypeB) super.clone();
clone.value = "Cloned " + this.value;
return clone;
}
public String getValue() {
return value;
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
Prototype prototypeA = new ConcretePrototypeA();
Prototype prototypeB = new ConcretePrototypeB();
Prototype cloneA = prototypeA.clone();
Prototype cloneB = prototypeB.clone();
System.out.println("PrototypeA value: " + cloneA.getValue());
System.out.println("PrototypeB value: " + cloneB.getValue());
}
}
在这个示例中,我们定义了一个原型基类Prototype,以及两个具体原型类ConcretePrototypeA和ConcretePrototypeB。具体原型类ConcretePrototypeA和ConcretePrototypeB分别实现了Prototype类中的clone方法,用于克隆原型对象。客户端代码Client中,我们创建了两个具体原型类对象prototypeA和prototypeB,并调用clone方法来克隆它们,然后分别输出克隆对象的属性值。
通过使用原型模式,我们可以轻松地创建新的对象,而无需重新创建对象实例。这使得在创建对象时更加高效,尤其是在需要大量对象实例的情况下。