用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。

//Prototype声明一个复制自身的接口。
interface Prototype {
Object selfClone();
}
//ConcretePrototype实现一个复制自身的操作。
class Product implements Prototype,Cloneable {
private int id;
private double price;
public Product() {}
public Product(int id, double price) {
this.id = id;
this.price = price;
}
public int getId() {
return id;
}
public double getPrice() {
return price;
}
@Override
public Object selfClone() {
Product object = new Product();
object.id = this.id;
object.price = this.price;
return object;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
//Client让一个原型复制自身从而创建一个新的对象。
public class PrototypeMain {
public static void main(String[] args) throws CloneNotSupportedException {
Product product1 = new Product(2022, 100);
System.out.println("product1:"+product1.getId() + " " + product1.getPrice());
// 不用new操作,直接复制一份
// Product product2 = new Product(2022, 100);
Product product2 = (Product) product1.selfClone();
System.out.println("product2:"+product2.getId() + " " + product2.getPrice());
//采用java中Cloneable类的clone方法
Product product3 = (Product) product1.clone();
System.out.println("product3:"+product3.getId() + " " + product3.getPrice());
}
}
其他设计模式详见本专栏其他博文~
特别感谢zst_2001在备考软考期间提供的帮助,贴上博主B站
zst_2001的个人空间