Junior — Middle
Care sunt diferențelele dintre instanțierea directă a unui obiect și utilizarea șablonului Builder pentru crearea sa?
sobes.tech AI
Răspuns de la AI
Inițializarea unui obiect se face direct prin apelarea constructorului, de exemplu, new ClassName(). Este o metodă simplă și rapidă de a crea un obiect atunci când toți parametrii necesari sunt cunoscuți și obiectul nu este prea complex.
Modelul Builder este utilizat pentru a crea obiecte complexe cu mulți parametri, în special dacă unii dintre aceștia sunt opționali sau au valori implicite. Builder permite configurarea pas cu pas a obiectului, îmbunătățind lizibilitatea și întreținerea codului.
Diferențe:
- Creare directă: rapidă, dar poate duce la constructori lungi cu mulți parametri.
- Builder: mai flexibil, îmbunătățește lizibilitatea, facilitează crearea de obiecte cu mulți parametri opționali.
Exemplu de Builder în 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);
}
}
}
// Utilizare:
User user = new User.UserBuilder()
.setName("Ivan")
.setAge(30)
.build();