â Definição
Prototype Ă© um padrĂŁo criacional que permite copiar objetos existentes sem depender de suas classes concretas. Ele Ă© Ăștil quando a criação de um objeto Ă© custosa ou complexa, e vocĂȘ quer duplicĂĄ-lo com facilidade.
đĄ CenĂĄrio prĂĄtico
Imagine um sistema de cadastro de produtos. VocĂȘ tem um produto base e quer criar cĂłpias dele com pequenas variaçÔes (como cor, tamanho ou preço), sem recriar tudo do zero.
Com Prototype, vocĂȘ clona o produto original e altera apenas o que for necessĂĄrio.
đŠ Estrutura de Projeto
src/
âââ Interfaces/
â âââ IProduto.pas
âââ Modelos/
â âââ TProduto.pas
âââ App/
âââ Main.pas
đ§Ș CĂłdigo Delphi
type
IProduto = interface
function Clone: IProduto;
function GetDescricao: string;
procedure SetDescricao(const Value: string);
end;
TProduto = class(TInterfacedObject, IProduto)
private
FDescricao: string;
public
function Clone: IProduto;
function GetDescricao: string;
procedure SetDescricao(const Value: string);
end;
function TProduto.Clone: IProduto;
var
novo: TProduto;
begin
novo := TProduto.Create;
novo.FDescricao := Self.FDescricao;
Result := novo;
end;
function TProduto.GetDescricao: string;
begin
Result := FDescricao;
end;
procedure TProduto.SetDescricao(const Value: string);
begin
FDescricao := Value;
end;
// Uso no cliente:
procedure TForm1.Button1Click(Sender: TObject);
var
original, copia: IProduto;
begin
original := TProduto.Create;
original.SetDescricao('Produto Base');
copia := original.Clone;
copia.SetDescricao('Produto Clonado');
ShowMessage('Original: ' + original.GetDescricao);
ShowMessage('CĂłpia: ' + copia.GetDescricao);
end;
â Vantagens
- đ Permite duplicar objetos com facilidade
- 𧩠Evita recriação manual de objetos complexos
- đ Reduz o acoplamento com classes concretas
đ ConclusĂŁo
Prototype Ă© como usar um molde: vocĂȘ faz uma cĂłpia fiel do original e ajusta o que precisar.