【发布时间】:2018-05-30 16:07:27
【问题描述】:
我正在创建一个对象:
public class Car {
private ArrayList<Door> doors;
private Engine engine;
public Car(ArrayList<Door> doors) {
this.doors = doors;
}
public Car setDoors(ArrayList<Door> doors) {
this.doors = doors;
return this;
}
public Car setEngine(Engine engine) {
this.engine = engine;
return this;
}// and getters
}
虽然它有公共的setter,但是否可以创建这个类的一个实例,然后在创建后使其不可变?
【问题讨论】:
-
我会研究建造者/工厂模式,并从一开始就让它们不可变。你可以给对象一个
isImmutable标志来禁用设置器,但这让我觉得很hacky。 -
您可以将其所有成员设置为最终成员。这样他们只能被分配到施工。当然,您必须删除您的公共设置器,但如果您的对象是不可变的,那么它们无论如何都是多余的。
标签: java