Builder
Criação de objetos
O que é o Builder Pattern?
O padrão Builder permite criar objetos complexos passo a passo, oferecendo controle total sobre o processo de construção — sem ter que lidar com construtores gigantes e difíceis de manter.
Em vez de instanciar um objeto com todos os atributos de uma vez, o Builder permite que você vá montando esse objeto parte por parte, como num passo a passo lógico.
Quando usar
- Quando um objeto precisa de muitos parâmetros.
- Quando há várias combinações possíveis de configuração.
- Quando você quer separar a lógica de construção da lógica de uso.
💡 Exemplo prático em C++ Moderno
Vamos criar um Person
com vários campos opcionais:
#include <iostream>
#include <string>
#include <memory>
class Person {
public:
std::string name;
int age = 0;
std::string city;
std::string occupation;
void print() const {
std::cout << name << ", " << age << " anos, " << occupation
<< " em " << city << std::endl;
}
};
class PersonBuilder {
private:
std::unique_ptr<Person> person;
public:
PersonBuilder() : person(std::make_unique<Person>()) {}
PersonBuilder& setName(const std::string& name) {
person->name = name;
return *this;
}
PersonBuilder& setAge(int age) {
person->age = age;
return *this;
}
PersonBuilder& setCity(const std::string& city) {
person->city = city;
return *this;
}
PersonBuilder& setOccupation(const std::string& occupation) {
person->occupation = occupation;
return *this;
}
std::unique_ptr<Person> build() {
return std::move(person);
}
};
int main() {
auto person = PersonBuilder()
.setName("Ana Souza")
.setAge(28)
.setOccupation("Engenheira de Software")
.setCity("São Paulo")
.build();
person->print();
return 0;
}
✅ Vantagens
- Código mais legível e organizado
- Evita construtores longos com parâmetros confusos
- Fácil de manter e estender
- Suporte a validações passo a passo
❌ Desvantagens
- Um pouco mais de código boilerplate
- Pode parecer exagero para objetos simples
Dica Profissional
Combine o padrão Builder com Method Chaining (como fizemos acima) para criar APIs fluídas e intuitivas. Isso ajuda tanto na usabilidade quanto na documentação do seu código.
E lembre-se: usar padrões como Builder mostra maturidade na escrita de software — e te destaca em entrevistas e revisões de código.
Conclusão
O Builder Pattern é um aliado poderoso para criar objetos flexíveis e bem definidos. Dominar padrões como esse te coloca em outro nível como desenvolvedor. Continue estudando e praticando!
👉 Quer ver como esse padrão se conecta com outros? Explore também os padrões Abstract Factory, Prototype e Factory Method.