1.模式动机
在有些系统中,存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就很高效,就像孙悟空拔下猴毛轻轻一吹就变出很多孙悟空一样简单。
简单粗暴的理解就是:创建一个对象当做模板,然后利用这个模板使用clone
方法快速的创建一个新的对象。
2.模式定义
原型模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。用这种方式创建对象非常高效,根本无须知道对象创建的细节。
3.模式代码
使用 Java 中提供的clone
方法实现原型模式非常简单。但是要注意浅克隆和深克隆,这里就不具体说这两个名词了。
import lombok.Getter; import lombok.Setter; import lombok.ToString; @Getter @Setter @ToString public class User implements Cloneable{ private String name; public User(String name) { this.name = name; } @Override protected User clone() throws CloneNotSupportedException { System.out.println("原型对象复制成功"); return (User) super.clone(); } } public class Client { public static void main(String[] args) throws CloneNotSupportedException { User user = new User("Mike"); System.out.println(user); User cloneUser = user.clone(); System.out.println(cloneUser); } }
运行结果:
User(name=Mike) 原型对象复制成功 User(name=Mike)
4.总结
原型模式通常适用于以下场景:
- 对象之间相同或相似,即只是个别的几个属性不同的时候。
- 对象的创建过程比较麻烦,但复制比较简单的时候。
来源:https://www.cnblogs.com/wuqinglong/p/12217489.html