🧬 Padrão Prototype em Delphi

Criação de novos objetos por clonagem de instùncias existentes

✅ 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

📌 Conclusão

Prototype Ă© como usar um molde: vocĂȘ faz uma cĂłpia fiel do original e ajusta o que precisar.

âŹ…ïž Voltar Ă  pĂĄgina principal