2
我有一個掃描器,它掃描網頁中的特定信息並從中創建一個對象。其中一個屬性是ID,稍後使用來查詢新對象的其餘屬性。因爲構建這個對象的責任被分成幾個類(刮板類和使用其中一個屬性進行查詢的類),所以我想避免使用傳遞Builder(另外,Builder模式一個訪問器似乎對我來說很奇怪)。在避免空值的情況下逐漸建立對象
與此同時,我想在正在構建的對象中避免空引用。
番石榴的可選看起來不太合適,因爲對象的屬性在所有步驟完成後肯定不會爲空。
我可以創建單獨的類,像這樣:
class ScrapeablePersonImportPart {
String surname;
Year yearOfBirth;
String externalId;
// ... getters, constructor ...
}
class PersonImport extends ScrapeablePersonImportPart {
SocialSecurityNumber ssn;
Color favoriteColor;
// ... getters, constructor ...
PersonImport(ScrapeablePersonImportPart part, SocialSecurityNumber ssn, Color favoriteColor) {
this.surname = part.getSurname();
this.yearOfBirth = part.getYearOfBirth();
this.externalId = part.getExternalId();
this.ssn = ssn;
this.favoriteColor = favoriteColor;
}
}
或者我可以避開子類,並使用組成代替。
隨着程序的發展,很有可能的構建可以組成更多的步驟。
有幾個獨立類的解決方案看起來是否合理?
你能否詳述一下爲什麼要避開Builder模式?這看起來非常合適。 – ruakh