原型模式属对象创建型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
原型模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。
因为Java中提供了Cloneable接口以实现对象的克隆,所以原型模式的实现就简单了。
实现代码:
/**
* 原型接口
* @author guor
* @version 2014-5-16
*/
interface Prototype extends Cloneable {
/**
* 显式定义clone接口方法,让子类实现
*/
Prototype clone() throws CloneNotSupportedException;
/**
* 获取原型对象的名字
* @return
*/
String getName();
}
/**
*
* @author guor
* @version 2014-5-16
*/
class ConcretePrototype implements Prototype {
private String name;
public ConcretePrototype(String name) {
this.name = name;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* {@inheritDoc}
*/
public Prototype clone() throws CloneNotSupportedException {
Prototype obj = (Prototype) super.clone();
return obj;
}
}
public class Client {
public static void main(String[] args) {
Prototype obj = new ConcretePrototype("test");
try {
Prototype cloneObj = obj.clone();
System.out.println(cloneObj.getName());
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
}