Junior — Middle
Jakie są różnice między bezpośrednim tworzeniem obiektu a użyciem wzorca Builder do jego tworzenia?
sobes.tech AI
Odpowiedź od AI
Inicjalizacja obiektu odbywa się bezpośrednio przez wywołanie konstruktora, na przykład new ClassName(). To prosty i szybki sposób tworzenia obiektu, gdy wszystkie niezbędne parametry są znane, a obiekt nie jest zbyt skomplikowany.
Wzorzec Builder jest używany do tworzenia złożonych obiektów z wieloma parametrami, szczególnie jeśli niektóre z nich są opcjonalne lub mają wartości domyślne. Builder pozwala na stopniową konfigurację obiektu, poprawiając czytelność i utrzymanie kodu.
Różnice:
- Tworzenie bezpośrednie: szybkie, ale może prowadzić do długich konstruktorów z wieloma parametrami.
- Builder: bardziej elastyczny, poprawia czytelność, ułatwia tworzenie obiektów z wieloma parametrami opcjonalnymi.
Przykład Builder w Java:
public class User {
private String name;
private int age;
private String address;
private User(UserBuilder builder) {
this.name = builder.name;
this.age = builder.age;
this.address = builder.address;
}
public static class UserBuilder {
private String name;
private int age;
private String address;
public UserBuilder setName(String name) {
this.name = name;
return this;
}
public UserBuilder setAge(int age) {
this.age = age;
return this;
}
public UserBuilder setAddress(String address) {
this.address = address;
return this;
}
public User build() {
return new User(this);
}
}
}
// Użycie:
User user = new User.UserBuilder()
.setName("Ivan")
.setAge(30)
.build();