Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Pessoas.Strategia;
- interface
- type TTipoClientes = (pessoaFisica,pessoaJuridica);
- type
- Ipessoa = interface;
- TPessoa = class
- strict private
- /// <link>aggregation</link>
- FStrategia: Ipessoa;
- public
- constructor Create(AStrategy: Ipessoa);
- procedure Requisicao;
- end;
- Ipessoa = interface
- ['{72C35A92-0AF1-4D05-BB73-CA52A3322FAE}']
- procedure Estrategia;
- function getTTipoClientes: TTipoClientes;
- procedure setTTipoClientes(const Value: TTipoClientes);
- property TipoCliente: TTipoClientes read getTTipoClientes write setTTipoClientes;
- end;
- TPessoaStrategia = class(TInterfacedObject, Ipessoa)
- private
- function getTTipoClientes: TTipoClientes;
- procedure setTTipoClientes(const Value: TTipoClientes);
- var FTipoCliente: TTipoClientes;
- public
- procedure Estrategia;
- property TipoCliente: TTipoClientes read getTTipoClientes write setTTipoClientes;
- end;
- implementation
- uses Pessoas.Interfaces;
- constructor TPessoa.Create(AStrategy: Ipessoa);
- begin
- inherited Create;
- FStrategia := AStrategy;
- end;
- procedure TPessoaStrategia.Estrategia;
- begin
- end;
- procedure TPessoa.Requisicao;
- begin
- FStrategia.Estrategia;
- end;
- function TPessoaStrategia.getTTipoClientes: TTipoClientes;
- begin
- result:= FTipoCliente;
- end;
- procedure TPessoaStrategia.setTTipoClientes(const Value: TTipoClientes);
- var
- PessoaF: IPessoaFisica;
- PessoaJ: IPessoaJuridica;
- begin
- FTipoCliente:= Value;
- case FTipoCliente of
- pessoaFisica: TPessoaFisica.Create;
- pessoaJuridica: TPessoaJuridica.Create;
- end;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement