概括
名称 | Prototype |
结构 | |
动机 | 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 |
适用性 |
|
解析
形象比喻:
PROTOTYPE—跟MM用QQ聊天,一定要说些深情的话语了,我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,这就是我的情话prototype了。(100块钱一份,你要不要)
1. Prototype
声明一个克隆自身的接口。
2. ConcretePrototype
实现一个克隆自身的操作。
3. Client
让一个原型克隆自身从而创建一个新的对象。
一言蔽之,就是以clone 的方法创建一个和原对象相同的对象。
实例
涉及的文件有:
Prototype.java
- ConcretePrototype.java
TestMain.java
这种模式很容易理解,就是在 Prototype 中有定义一个clone 方法(记得需要继承Cloneable接口)
/**
* @author oscar999
* @date 2013-7-19
* @version V1.0
*/
package designptn.prototype;
public class Prototype implements Cloneable {
private String name;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name
* the name to set
*/
public void setName(String name) {
this.name = name;
}
public Object clone() {
try {
return super.clone();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
/**
* @author oscar999
* @date 2013-7-19
* @version V1.0
*/
package designptn.prototype;
public class ConcretePrototype extends Prototype {
public ConcretePrototype(String name) {
setName(name);
}
}
/**
* @author oscar999
* @date 2013-7-19
* @version V1.0
*/
package designptn.prototype;
public class TestMain {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Prototype pro = new ConcretePrototype("prototype");
Prototype pro2 = (Prototype) pro.clone();
System.out.println(pro.getName());
System.out.println(pro2.getName());
}
}