原型模式
2020-08-04 本文已影响0人
潜心之力
一、模式简介
定义:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。
场景:对象之间相同或相似,创建过程比较麻烦,复制比较简单的时候。
- 角色结构:
- 抽象原型类:规定了具体原型对象必须实现的接口。
- 具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。
- 访问类:使用具体原型类中的 clone() 方法来复制新的对象。
二、模式实现
public class RealizeType implements Cloneable { -> 实现接口
private String name;
private Integer age;
private String sex;
@Override
public Object clone() throws CloneNotSupportedException { -> 重写方法并修改修饰符
return super.clone();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "RealizeType{" + "name='" + name + ", age=" + age + ", sex='" + sex + '}';
}
}
try {
RealizeType realizeType1 = new RealizeType();
realizeType1.setName("wjx");
realizeType1.setAge(20);
realizeType1.setSex("male");
RealizeType realizeType2 = (RealizeType) realizeType1.clone();
realizeType2.setName("xjw");
System.out.println(realizeType1.toString());
System.out.println(realizeType2.toString());
} catch (Exception e) {
e.printStackTrace();
}