原型模式
原型模式为创建型模式
,也就是是创建对象的模式,但是这个创建对象的方式为克隆clone方式
原型模式例子
被创建的对象
public class Person implements Cloneable {
private int id;
private String 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
public Object clone() {
Object clone = null;
try {
clone = super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return clone;
}
}
原型操作类
public class PersonPrototype {
private static Person person = new Person();
public static Person getPerson() {
return (Person) person.clone();
}
}
测试类
public class PersonDemo {
public static void main(String[] args) {
Person person = PersonPrototype.getPerson();
person.setId(1);
person.setName("zhangsan");
Person person2 = PersonPrototype.getPerson();
person2.setId(2);
person2.setName("lisi");
System.out.println(person);
System.out.println(person2);
}
}
PS: 上述例子只是讲解的思想,并不是严格设计模式类图关系,设计模式是死的,只要思想,代码可以写的更优雅,而不是教科书般的死板
java中的深拷贝与浅拷贝
原型模式思想是通过拷贝来创建对象,那么就会涉及到java中的深拷贝与浅拷贝的问题
这里不再单独展开,让博客类容单一化,具体参考java中的深拷贝与浅拷贝