原型模式
原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。
简单实现
1、实现 Cloneable接口、重写clone()方法:
public class User implements Cloneable {
private int age;
private String name;
public User() {
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
protected User clone() throws CloneNotSupportedException {
User user = (User) super.clone();
return user;
}
}
2、调用clone方法
User user1 = new User();
user1.setAge(10);
user1.setName("大哥");
User user2 = null;
try {
user2 = user1.clone();
System.out.println(user2.getAge()+user2.getName());//输出结果为:10大哥
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
通过clone的方法,复制了与原型相同的对象,原型的属性也被复制。
适用场景
原型模式通常适用于以下场景:
对象之间相同或相似,即只是个别的几个属性不同的时候。
对象的创建过程比较麻烦,但复制比较简单的时候。