定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
所谓原型模式,其实就是依托一个已经实例化的对象去创建另外一个可以进行定制的对象,而不需要知道创建过程中的具体细节。
浅复制与深复制:
clone方法对于值类型的字段会进行逐位复制,而对于引用类型的字段,则复制引用但是不复制引用的对象,所以原始的对象和副本都引用同一对象。对象改变所以副本都会被改变。
浅复制——被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象引用都依然指向原来的对象。
深复制——把引用的对象的变量指向复制过的新对象,而不是原有的被引用的对象。
总结:
1、应考虑线程安全性和复制的深度。
适用情况:
2、当要实例化的类是在运行时指定时。
3、为了避免创建一个与产品类层次平行的工厂类层次时。
4、当一个类的实例只能有几个不同状态组合中的一种时。
原型模式的优点:待总结。