如何在不破坏不变性的情况下从另一个不可变对象(immutable对象)获取更新的不可变对象(immutable对象)。类似于在 Scala 中实现事物的方式或在 Immutables 库中实现事物的方式。
我怎样才能实现类似 Customer.Builder.from(anotherCustomer).replaceOrder(oldOrder,newOrder).with(newName).build()
重用旧对象并将我想要的所有更改排队,以便构建一个新对象。
我正在使用 Java。
最佳答案
public class Customer {
private String name;
private Order order
private Customer(CustomerBuilder builder) {
this.name = builder.name;
this.order = builder.order;
}
public Customer replace(Order order) {
return new CustomerBuilder().name(this.name).order(order).build();
}
public static class CustomerBuilder {
private String name;
private Order order
public CustomerBuilder name(String name) {
this.name = name;
return this;
}
public CustomerBuilder order(Order order) {
this.order = order;
return this;
}
public Customer build() {
return new Customer(this);
}
}
}
关于java - 在不破坏不变性的情况下更新不可变对象(immutable对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36411845/