原型模式的核心是:
通过复制现有对象来创建新对象,而不是通过new关键字。
简单说:像细胞分裂一样,通过复制自己来创建新对象。
场景:复印机
原稿:就是原型(Prototype)
复印按钮:就是
Clone()方法复印件:就是新创建的对象
你不需要重新手写一份文档,只需要把原稿放进复印机,按下复印按钮,就得到一份一模一样的副本。
Prototype(原型接口)
声明
Clone()方法
ConcretePrototype1、ConcretePrototype2(具体原型)
实现
Clone()方法,返回自身的副本
Client(客户端)
通过调用
prototype->Clone()来创建新对象
public class Client{ public static void main (String[] args) { Product product1 = new Product(2022, 5.28); System.out.println(product1.getId() + "" + product1.getPrice()); Product product2 = (Product)product1.Clone(); System.out.println(product2.getId() + "" + product2.getPrice()); Product product3 = (Product)product1.Clone(); System.out.println(product3.getId() + "" + product3.getPrice()); } } // 原型接口 interface Prototype{ Object Clone(); } // 具体原型 class Product implements Prototype{ 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 Clone(){ Product object = new Product(); object.id = this.id; object.price = this.price; return object; } }