Fórum Padrão Observer #411782

21/01/2012

0

Estou tentando fazer o exemplo Padrão Observer da revista Clube Delphi edição 119 e está reclamando quando coloco a uses Generics.Collections.

Eu acredito que isso acontece pois meu Delphi é o 7 daí queria saber se tem como resolver?
Paulo Andrade

Paulo Andrade

Responder

Posts

21/01/2012

Marco Salles

Então amigo , eu não estou com a revista aqui , mas o Padrão Observer não esta relacionado com a
linguagem especifica , muito menos com a utilização do Generecis. O Fato que o autor deve ter definido
classes que necessitam da units generics.collections

Voce pode trocar a classe por uma outra extensivel ao Delphi7 , ou mesmo ir para um caminho mais dificil
que é Simular o Generecis no Delphi7 . Este último caminho é mais difícil porém é possível
Na realidade o conceito de genericcs existe em Versões anteriores oproblema é que a sua implementação é
bem mais complexa . O que as novas Versões do Delphi feziram foi um wrappers para se tornar a utilização
deste tipo de implementação mais agradável
Responder

Gostei + 0

21/01/2012

Paulo Andrade

Então amigo , eu não estou com a revista aqui , mas o Padrão Observer não esta relacionado com a
linguagem especifica , muito menos com a utilização do Generecis. O Fato que o autor deve ter definido
classes que necessitam da units generics.collections

Voce pode trocar a classe por uma outra extensivel ao Delphi7 , ou mesmo ir para um caminho mais dificil
que é Simular o Generecis no Delphi7 . Este último caminho é mais difícil porém é possível
Na realidade o conceito de genericcs existe em Versões anteriores oproblema é que a sua implementação é
bem mais complexa . O que as novas Versões do Delphi feziram foi um wrappers para se tornar a utilização
deste tipo de implementação mais agradável


Segui abaixo o código. O que posso alterar? O que posso usar para resolver?

unit uTerminal;

interface

uses Generics.Collections, uObserver;

type
  TTerminal = class(TInterfacedObject, IObservavel)
  private
    Observadores: TList<IObservador>
    TerminalIniciado: Boolean;
  public
    procedure IniciarTerminal;
    procedure FinalizarTerminal;
    procedure RegistrarObservador(Observador: IObservador);
    procedure RemoverObservador(Observador: IObservador);
    procedure NotificarObservadores;
    procedure Create;
  end;

implementation
                  

{ TTerminal }
              
procedure TTerminal.RegistrarObservador(Observador: IObservador);
begin

end;

procedure TTerminal.Create;
begin

end;

procedure TTerminal.FinalizarTerminal;
begin

end;

procedure TTerminal.IniciarTerminal;
begin

end;

procedure TTerminal.NotificarObservadores;
begin

end;

procedure TTerminal.RemoverObservador(Observador: IObservador);
begin

end;

end.
Responder

Gostei + 0

21/01/2012

Marco Salles

Eu acho olhando rapidamente a definição , voce pode continuar com Tlist a unica digferença~que voce vai ter que
fazer conversão explicita na hora de adicionar os Objetos .Pois TLIst<IObserver> claramente as operaçoes
de adição , remoção , consulta sçao especificxas a Objetos do que implementam a Interface IObserver
Ja a classe TList padrão do Delphi voce adiciona Ponteiros que deverão sofre Type Cast para representar
a classe de seu Objetos

Por exemplo

Var
Obj:Tlist
begin
Obj.Add(UmObjeto);
...

TClasseDoObjeto(Obj[i]).PropriedadeDaClasseDoObjeto;

Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar