也許我在網站的選擇上犯了一個錯誤。'setters'(set-methods)有什麼用?
對不起,我的英語
直到最近,我認爲有在哪些字段設置一次一類寫setters
和getters
沒有任何意義。而不是setters\getters
我使用public constant
字段(或在Java中爲final
)並通過構造函數設置字段。
但是我最近遇到了這種情況,當這種方法證明是非常不舒服的。類有很多領域(5-7個領域)。
我首先意識到0的好處。
而不是做這個的:
class Human {
public final int id;
public final String firstName;
public final String lastName;
public final int age;
public final double money;
public final Gender gender;
public final List<Human> children;
Human(int id, String firstName, String lastName, int age, double money, Gender gender, List<Human> children) {
// set fields here
}
}
class HumanReader {
Human read(Input input) {
int id = readId(input);
String firstName = readFirstName(input);
// ...
List<Human> children = readChildren(input);
return new Human(id, firstName, lastName, age, money, gender, children);
}
}
我開始使用下一個解決方案:
interface Human {
int getId();
String firstName;
// ...
List<Human> getChildren();
}
class HumanImpl implements Human {
public int id;
public String firstName;
// ...
public List<Human> children;
public int getId() {
return id;
}
public String getFirstName() {
return firstName;
}
// ...
public List<Human> getChildren() {
return children;
}
}
class HumanReader {
Human read(Input input) {
HumanImpl human = new HumanImpl();
human.id = readId(input);
human.firstName = readFirstName(input);
// ...
human.children = readChildren(input);
return human;
}
}
我認爲第二種解決方案是更好的。它沒有混淆參數順序的複雜構造函數。
但是setters
有什麼用?我仍然無法理解。或者他們需要統一?