在Java中,Builder模式是一种创建型设计模式,用于简化复杂对象的创建过程。要使用Builder模式实现对象的深拷贝,你需要遵循以下步骤:
public class MyClass {
private int id;
private String name;
private List<String> items;
// 构造函数、getter和setter方法省略
public static class Builder {
private int id;
private String name;
private List<String> items;
public Builder(MyClass original) {
this.id = original.getId();
this.name = original.getName();
this.items = new ArrayList<>(original.getItems());
}
// 其他方法省略
}
}
注意,在Builder构造函数中,我们使用new ArrayList<>(original.getItems())来创建一个新的列表,这样就可以实现深拷贝。
public class Builder {
// ...其他代码
public Builder setId(int id) {
this.id = id;
return this;
}
public Builder setName(String name) {
this.name = name;
return this;
}
public Builder setItems(List<String> items) {
this.items = new ArrayList<>(items);
return this;
}
// ...其他方法
}
同样,在setter方法中,我们使用new ArrayList<>(items)来创建一个新的列表,以实现深拷贝。
build()方法,该方法将使用Builder对象的属性创建一个新的原始对象实例。public class Builder {
// ...其他代码
public MyClass build() {
MyClass myClass = new MyClass();
myClass.setId(id);
myClass.setName(name);
myClass.setItems(items);
return myClass;
}
}
MyClass original = new MyClass();
original.setId(1);
original.setName("Test");
original.setItems(Arrays.asList("item1", "item2"));
MyClass copy = new MyClass.Builder(original).build();
这样,copy对象将是original对象的一个深拷贝。对copy对象的修改不会影响到original对象。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。