设计模式(十九)——原型模式(Prototype)
用于创建重复对象
与享元模式的区别
享元模式是共享对象,两个对象指向一个地址,原型模式的两个对象的属性相同,指向的是两个不同的地址。
优点
提高性能,可以快速复制对象
缺点
每个对象都要重写clone方法,实现Cloneable接口
实现
孙悟空可以拔下毫毛变出很多个自己,这些孙悟空的所有东西都相同,但却是不同的个体
public class SunWuKong implements Cloneable{
private String name;
private String age;
private String skill;
public SunWuKong(String name, String age, String skill) {
this.name = name;
this.age = age;
this.skill = skill;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return (SunWuKong)super.clone();
}
}
public class Main {
public static void main(String[] args) throws CloneNotSupportedException {
SunWuKong sunWuKong1 = new SunWuKong("孙悟空","500","七十二变");
SunWuKong sunWuKong2 = (SunWuKong) sunWuKong1.clone();
System.out.println(sunWuKong1==sunWuKong2);
}
}
运行结果:两个对象返回不同的地址