模式分类:
创建型模式
定义:
原型模式(prototype):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
什么时候使用:
当创建给定类的实例的过程很昂贵或者很复杂时,就使用原型模式。
一般在初始化的信息不发生变化的情况下,克隆是最好的办法。这既隐藏了对象创建的细节,又对性能是大大的提高。等于是不用重新初始化对象,而是动态地获得对象运行时的状态。
在一个复杂的类层次中,当系统必须从其中的许多类型创建新对象时,可以考虑原型。
优缺点:
优点:
1. 向用户隐藏制造新实例的复杂性。
2. 提供让客户能够产生未知类型对象的选项。
3. 在某些环境下,复制对象比创建新对象更有效。
缺点:
对象复制有时相当复杂。
场景分析:
见大话设计模式-原型模式(简历复制)
“深拷贝”与“浅拷贝”:
对于JAVA而言,如果对象持有另一对象的引用,则clone()方法是复制引用,但不复制对象,此为浅拷贝。
若需使用深拷贝(拷贝持有对象),则需自行覆盖clone()方法实现。