1.概念
提前创建出一个对象,但在要使用该类对象时不是直接使用这个已经存在的对象,而是克隆一个新的对象。
2.作用
有时我们需要在不同的地方使用相同的对象,但是如果这个对象构成比较复杂的情况下,我们很难甚至不可能从头创建一个一模一样的,所以需要从已有的对象克隆一个出来。
这个时候使用原型模式就可以帮助我们快速获取与原型相同的对象。
3.应用场景
我们需要的对象构成比较复杂时
代码中需要频繁创建对象时
4.特点
克隆操作由原型对象自己完成,并向外部提供克隆接口
5.类与对象关系
原型类中提供clone方法
6.实现
原型对象
public class Prototype implements Cloneable {
private String name;
public Prototype(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 重写 clone 方法以实现浅拷贝
@Override
protected Prototype clone() throws CloneNotSupportedException {
return (Prototype) super.clone();
}
@Override
public String toString() {
return "Prototype{" +
"name='" + name + '\'' +
'}';
}
}
因为java的Object类中已经提供了clone()方法,所以我们使用原型模式时不是从头写clone方法,而是重写父类的方法,然后才在重写的方法中完成逻辑。