Sobes.tech
Junior — Middle

Que funcionalidade o padrão Builder fornece no processo de desenvolvimento de objetos?

sobes.tech IA

Resposta da IA

O padrão Builder é utilizado para criar objetos complexos passo a passo com múltiplos parâmetros, especialmente quando um construtor com muitos argumentos é inconveniente ou propenso a erros. Ele separa o processo de construção do objeto de sua representação, permitindo criar diferentes variantes do objeto com o mesmo processo de montagem.

Vantagens principais:

  • Melhora a legibilidade do código ao criar objetos com múltiplos parâmetros.
  • Permite criar objetos de forma incremental, definindo apenas os parâmetros necessários.
  • Elimina a necessidade de múltiplos construtores com diferentes parâmetros (construtor com carrinho).

Exemplo em Java:

public class User {
    private String firstName;
    private String lastName;
    private int age;
    private String phone;
    private String address;

    private User(UserBuilder builder) {
        this.firstName = builder.firstName;
        this.lastName = builder.lastName;
        this.age = builder.age;
        this.phone = builder.phone;
        this.address = builder.address;
    }

    public static class UserBuilder {
        private String firstName;
        private String lastName;
        private int age;
        private String phone;
        private String address;

        public UserBuilder setFirstName(String firstName) {
            this.firstName = firstName;
            return this;
        }

        public UserBuilder setLastName(String lastName) {
            this.lastName = lastName;
            return this;
        }

        public UserBuilder setAge(int age) {
            this.age = age;
            return this;
        }

        public UserBuilder setPhone(String phone) {
            this.phone = phone;
            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()
                .setFirstName("Ivan")
                .setLastName("Ivanov")
                .setAge(30)
                .build();
Que funcionalidade o padrão Builder fornece no… - sobes.tech