【JAVA设计模式】5.原型模式

原型模式是个较少被提到的设计模式,其本质就是提供了clone方法的接口,其实现需要满足以下几点:

1. 对任何的对象x,都有x.clone() !=x,即克隆对象与原对象不是同一个对象。 
2. 对任何的对象x,都有x.clone().getClass()==x.getClass(),即克隆对象与原对象的类型一样。 
3. 如果对象x的equals()方法定义恰当,那么x.clone().equals(x)应该成立。

简单对象的克隆可以通过实现Cloneable接口,并在clone方法中调用super.clone()实现。

【JAVA设计模式】5.原型模式

JAVA默认的clone方法是浅拷贝,新对象中的属性是旧对象的引用,所以可以自己重写clone()方法实现深拷贝。

UML图:

【JAVA设计模式】5.原型模式

JAVA代码:https://github.com/zhuaizhuaixi/design-pattern/tree/master/src/designpattern/creation/prototype