Sobes.tech
Junior — Middle

Quali sono le differenze tra istanziare un oggetto direttamente e utilizzare il pattern Builder per crearlo?

sobes.tech AI

Risposta dell'AI

L'istanza di un oggetto avviene direttamente chiamando il costruttore, ad esempio new ClassName(). Questo è un metodo semplice e rapido per creare un oggetto quando tutti i parametri necessari sono noti e l'oggetto non è troppo complesso.

Il pattern Builder viene utilizzato per creare oggetti complessi con molti parametri, specialmente se alcuni di essi sono opzionali o hanno valori predefiniti. Builder consente di configurare l'oggetto passo dopo passo, migliorando la leggibilità e la manutenibilità del codice.

Differenze:

  • Creazione diretta: veloce, ma può portare a costruttori lunghi con molti parametri.
  • Builder: più flessibile, migliora la leggibilità, facilita la creazione di oggetti con molti parametri opzionali.

Esempio di Builder in 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);
        }
    }
}

// Uso:
User user = new User.UserBuilder()
                .setName("Ivan")
                .setAge(30)
                .build();