Advertisement
filhotecmail

UClientes.Strategia

Oct 23rd, 2017
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.62 KB | None | 0 0
  1. unit Pessoas.Strategia;
  2.  
  3. interface
  4.  
  5.  type TTipoClientes = (pessoaFisica,pessoaJuridica);
  6.  
  7. type
  8.   Ipessoa = interface;
  9.  
  10.   TPessoa = class
  11.   strict private
  12.     /// <link>aggregation</link>
  13.     FStrategia: Ipessoa;
  14.  
  15.   public
  16.     constructor Create(AStrategy: Ipessoa);
  17.     procedure Requisicao;
  18.   end;
  19.  
  20.   Ipessoa = interface
  21.   ['{72C35A92-0AF1-4D05-BB73-CA52A3322FAE}']
  22.     procedure Estrategia;
  23.     function getTTipoClientes: TTipoClientes;
  24.     procedure setTTipoClientes(const Value: TTipoClientes);
  25.     property TipoCliente: TTipoClientes  read getTTipoClientes write setTTipoClientes;
  26.   end;
  27.  
  28.   TPessoaStrategia = class(TInterfacedObject, Ipessoa)
  29.   private
  30.     function getTTipoClientes: TTipoClientes;
  31.     procedure setTTipoClientes(const Value: TTipoClientes);
  32.     var FTipoCliente: TTipoClientes;
  33.   public
  34.     procedure Estrategia;
  35.      property TipoCliente: TTipoClientes  read getTTipoClientes write setTTipoClientes;
  36.   end;
  37.  
  38. implementation
  39.  
  40. uses Pessoas.Interfaces;
  41.  
  42. constructor TPessoa.Create(AStrategy: Ipessoa);
  43. begin
  44.   inherited Create;
  45.   FStrategia := AStrategy;
  46. end;
  47.  
  48. procedure TPessoaStrategia.Estrategia;
  49. begin
  50.  
  51.  
  52. end;
  53.  
  54. procedure TPessoa.Requisicao;
  55. begin
  56.   FStrategia.Estrategia;
  57. end;
  58.  
  59. function TPessoaStrategia.getTTipoClientes: TTipoClientes;
  60. begin
  61.   result:= FTipoCliente;
  62. end;
  63.  
  64. procedure TPessoaStrategia.setTTipoClientes(const Value: TTipoClientes);
  65. var
  66.   PessoaF: IPessoaFisica;
  67.   PessoaJ: IPessoaJuridica;
  68. begin
  69.   FTipoCliente:= Value;
  70.   case FTipoCliente of
  71.     pessoaFisica:   TPessoaFisica.Create;
  72.     pessoaJuridica: TPessoaJuridica.Create;
  73.   end;
  74. end;
  75.  
  76. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement