原型模式定义: 用原型实例指定建立对象的种类,而且经过拷贝这些原型建立新的对象.java
要理解原型原型模式必须先理解Java里的浅复制和深复制。有的地方,复制也叫作克隆。Java提供这两种克隆方式。app
浅克隆:被克隆对象的全部变量都含有与原来的对象相同的值,而它全部的对其余对象的引用都仍然指向原来的对象。换一种说法就是浅克隆仅仅克隆所考虑的对象,而不克隆它所引用的对象。this
深克隆:被克隆对象的全部变量都含有与原来的对象相同的值,但它全部的对其余对象的引用再也不是原有的,而这是指向被复制过的新对象。换言之,深复制把要复制的对象的全部引用的对象都复制了一遍,这种叫作间接复制。spa
Java语言的构建模型直接支持原型模型模式,全部要克隆的类必须实现一个标识接口Cloneable。全部的类都有一个Clone()方法(Object提供)。克隆知足的条件:对于任何对象x,都有x.clone()!=x,换言之,克隆的对象不是原来的对象;x.clone().getClass()==x.getClass(),换言之,克隆的对象与原对象是同一类型。x.clone().equals(x)成立。.net
Prototype模式容许一个对象再建立另一个可定制的对象,根本无需知道任何如何建立的细节,工做原理是:经过将一个原型对象传给那个要发动建立的对象,这个要发动建立的对象经过请求原型对象拷贝它们本身来实施建立。对象
如何使用? 由于Java中的提供clone()方法来实现对象的克隆,因此Prototype模式实现一会儿变得很简单.blog
eg:接口
调用的时候直接调用就能够了。ip
AbstractSpoon spoon = new SoupSpoon();
AbstractSpoon spoon2 = spoon.clone();
固然也能够结合工厂模式来建立AbstractSpoon实例。get