原型模式
- 描述
- 基本使用
- 使用场景
描述
基于已有对象,利用JDK的Cloneable接口,生成一个新的对象。
常用于需要同时创建多个对象的场景
默认的clone是浅拷贝,如果要实现深拷贝需自行处理
- 可以在clone方法中手动拷贝数组成员或者其他引用类型成员
- 还可以通过对象二进制流的方式实现深拷贝
基本使用
- 声明一个实现Cloneable的类
public class User implements Cloneable {
private String name;
private String address;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public User clone() {
try {
return (User) super.clone();
} catch (CloneNotSupportedException e) {
throw new RuntimeException(e);
}
}
}
- 使用
public class Sample {
public static void main(String[] args) {
User baseUser = new User();
baseUser.setName("张三");
// 基于张三的名称 创建多个副本 每个副本设置不同的地址
for (int i = 0; i < 3; i++) {
User cloneUser = baseUser.clone();
cloneUser.setAddress("地址:" + i);
System.out.println(cloneUser);
}
}
}
使用场景
当构建基础对象比较耗时时,采用Clone方式
否则直接构建基础对象