Sobes.tech
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();