一、介绍
用原型的实例指定创建的种类,并通过拷贝这些原型创建新的对象
保护最原始的那一份存档,隐藏复制过程
二、类图分析
Client:使用类
Person:用户类,包含很多用户信息
原型模式的类图非常简单,只有两个类。Person是包含许多用户信息的类,Client类持有Person类的引用,但是Person对象非常重要,不能直接操作Person对象,所以要调用Person的clone()方法创建一个Person副本,在这个副本上做操作。既保护了原始存档,又隐藏了创建过程。
三、代码实现
public class Person implements Cloneable{
int id;
String name;
public Person(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
@Override
protected Object clone() {
return new Person(this.id,this.name);
}
}
public class Client {
@Test
public void play(){
Person person = new Person(1,"jack");
System.out.println(person);
Person newPerson = (Person) person.clone();
System.out.println(newPerson);
}
}