从原型实例复制克隆出新实例,而绝不是从类去实例化
使用场景
- 当希望基于现有对象创建新的对象时,比如某个类的实例很复杂,如果完全重新创建成本会很高,可以将这个实例复制一份。
- 参照原型进行量产(批量创建同类型对象实例)。
优点
- 向客户隐藏制造新实例的复杂性
- JVM会进行内存操作直接拷贝原始数据流,简单粗暴,不会有其他更多的复杂操作(类加载,实例化,初始化等等),速度远远快于实例化操作
缺点
- 对象的复制有时相当复杂
例子
原型对象Phone.java
1 | public class Phone implements Cloneable{ |
对Phone进行量产的工厂
1 | public class PhoneFactory { |
测试原型模式创建实例
1 | public class TestProtoType { |
结果
1 | com.wangji.prototype.Phone@61bbe9ba phone:0 |