✅ Definição
Builder é um padrão criacional que separa a construção de um objeto complexo da sua representação, permitindo que o mesmo processo de construção crie diferentes representações.
💡 Cenário prático
Imagine um sistema que gera relatórios. Alguns relatórios têm cabeçalho, corpo e rodapé; outros têm apenas corpo e rodapé. Você quer montar esses relatórios de forma flexível, sem duplicar código.
Com Builder, você pode montar relatórios passo a passo, escolhendo quais partes incluir, sem alterar a estrutura geral.
📦 Estrutura de Projeto
src/
├── Builders/
│ └── TRelatorioBuilder.pas
├── Produtos/
│ └── TRelatorio.pas
└── App/
└── Main.pas
🧪 Código Delphi
type
TRelatorio = class
private
FConteudo: string;
public
procedure Adicionar(texto: string);
function ObterConteudo: string;
end;
procedure TRelatorio.Adicionar(texto: string);
begin
FConteudo := FConteudo + texto + sLineBreak;
end;
function TRelatorio.ObterConteudo: string;
begin
Result := FConteudo;
end;
type
TRelatorioBuilder = class
private
FRelatorio: TRelatorio;
public
constructor Create;
procedure AddCabecalho;
procedure AddCorpo;
procedure AddRodape;
function GetRelatorio: TRelatorio;
end;
constructor TRelatorioBuilder.Create;
begin
FRelatorio := TRelatorio.Create;
end;
procedure TRelatorioBuilder.AddCabecalho;
begin
FRelatorio.Adicionar('--- CABEÇALHO ---');
end;
procedure TRelatorioBuilder.AddCorpo;
begin
FRelatorio.Adicionar('Conteúdo principal do relatório.');
end;
procedure TRelatorioBuilder.AddRodape;
begin
FRelatorio.Adicionar('--- RODAPÉ ---');
end;
function TRelatorioBuilder.GetRelatorio: TRelatorio;
begin
Result := FRelatorio;
end;
// Uso no cliente:
procedure TForm1.Button1Click(Sender: TObject);
var
builder: TRelatorioBuilder;
relatorio: TRelatorio;
begin
builder := TRelatorioBuilder.Create;
builder.AddCabecalho;
builder.AddCorpo;
builder.AddRodape;
relatorio := builder.GetRelatorio;
ShowMessage(relatorio.ObterConteudo);
end;
✅ Vantagens
- 🔁 Permite construir objetos passo a passo
- 🧩 Facilita a criação de variações do mesmo objeto
- 🔒 Separa a lógica de construção da lógica de apresentação
📌 Conclusão
Builder é como montar um sanduíche: você escolhe os ingredientes e a ordem, e o resultado final é sempre bem estruturado.