O Padrão Builder: Simplificando Criação de Objetos Complexos
O Padrão Builder é um padrão de design criacional usado para construir objetos passo a passo. Ele permite a criação de objetos com diferentes configurações, ocultando os detalhes de sua construção
Em termos simples, o Padrão Builder separa a construção de um objeto complexo de sua instância final, Usa um construtor para configurar o objeto passo a passo, ocultando a complexidade da criação. Este padrão é útil quando há múltiplos parâmetros opcionais ou quando a criação de um objeto envolve muitos passos.
Vantagens do Padrão Builder:
- Flexibilidade: Permite a criação de diferentes representações de um objeto complexo.
- Legibilidade: Torna o código mais legível, pois os passos de construção são claros.
- Separação de Responsabilidades: Isola o processo de construção do objeto, desse jeito temos um código mais organizado.
Quando usar o Padrão Builder?
O Padrão Builder é recomendado quando:
- A construção de um objeto envolve muitos passos.
- Existem muitos parâmetros opcionais.
- É necessária a criação de diferentes representações do mesmo objeto.
Exemplo de uso do Padrão Builder em Flutter:
Vamos supor que queremos criar um widget complexo em Flutter, como um cartão personalizado com diferentes configurações de cor, título e conteúdo. Podemos usar o padrão Builder para simplificar esse processo.
// Classe que representa o Cartão
class Cartao {
final String titulo;
final String conteudo;
final Color cor;
Cartao(this.titulo, this.conteudo, this.cor);
}
// Builder para construir o Cartão passo a passo
class CartaoBuilder {
String titulo = '';
String conteudo = '';
Color cor = Colors.white;
CartaoBuilder withTitulo(String novoTitulo) {
titulo = novoTitulo;
return this;
}
CartaoBuilder withConteudo(String novoConteudo) {
conteudo = novoConteudo;
return this;
}
CartaoBuilder withCor(Color novaCor) {
cor = novaCor;
return this;
}
Cartao construir() {
return Cartao(titulo, conteudo, cor);
}
}
// Exemplo de utilização do Builder para criar um Cartão
void main() {
Cartao cartaoPersonalizado = CartaoBuilder()
.withTitulo('Meu Cartão')
.withConteudo('Conteúdo do cartão')
.withCor(Colors.blue)
.construir();
print('Cartão criado: ${cartaoPersonalizado.titulo}, ${cartaoPersonalizado.conteudo}, ${cartaoPersonalizado.cor}');
}
Neste exemplo, o CartaoBuilder
permite a criação de diferentes cartões personalizados sem precisar configurar todos os atributos ao mesmo tempo.