Em que momento destruir uma classe
Tenho a classe
"exemplo"
Em um form eu eu chamo a GetInstance, crio tudo.. ok.
Em qual momento eu tenho necessidade de destruir essa classe? Estou tendo dificuldade pra definir quando e onde destruir essa classe.
Caso a pergunta seja vaga, posso explicar melhor. (É, não coloquei o destructor dela, é só um exemplo do que to usando de modo geral.)
unit untEmpresaController;
interface
type
TEmpresaController = class
strict private
class var FInstance: TEmpresaController;
constructor Create;
private
public
class function GetInstance: TEmpresaController;
end;
implementation
{ TEmpresaController }
constructor TEmpresaController.Create;
begin
inherited;
end;
class function TEmpresaController.GetInstance: TEmpresaController;
begin
If FInstance = nil Then
begin
FInstance := untEmpresaController.TEmpresaController.Create();
end;
Result := FInstance;
end;
end."exemplo"
Em um form eu eu chamo a GetInstance, crio tudo.. ok.
Em qual momento eu tenho necessidade de destruir essa classe? Estou tendo dificuldade pra definir quando e onde destruir essa classe.
Caso a pergunta seja vaga, posso explicar melhor. (É, não coloquei o destructor dela, é só um exemplo do que to usando de modo geral.)
Pablo Ricardo
Curtidas 0
Melhor post
Hélio Devmedia
29/09/2016
Você implementou o padrão Singleton, pelo que vi.
Eu nunca tentei utilizar o código [b]class var FInstance: TEmpresaController [/b] talvez porque seja um recurso de versões mais recentes do Delphi, porem acredito que é o mais correto porque é é similar como se faz em outras linguagens.
Sempre declarei um var abaixo da seção implementation, criando uma variavel de unidade mas de escopo protegido, onde não é acessado por outras unidades, e no final antes do ultimo end (end.) eu faço o seguinte
Assim, quando a aplicação for fechada, essa instância será destruída.
Espero ter sido útil, se fui, por favor, marque um Joinha para eu ficar ciente.
Eu nunca tentei utilizar o código [b]class var FInstance: TEmpresaController [/b] talvez porque seja um recurso de versões mais recentes do Delphi, porem acredito que é o mais correto porque é é similar como se faz em outras linguagens.
Sempre declarei um var abaixo da seção implementation, criando uma variavel de unidade mas de escopo protegido, onde não é acessado por outras unidades, e no final antes do ultimo end (end.) eu faço o seguinte
initialization finalization Free(FInstance); end.
Assim, quando a aplicação for fechada, essa instância será destruída.
Espero ter sido útil, se fui, por favor, marque um Joinha para eu ficar ciente.
GOSTEI 1
Mais Respostas
Pablo Ricardo
27/09/2016
A utilização da classe é como controller.
GOSTEI 0
Andrêy Ferraz
27/09/2016
class function TEmpresaController.GetInstance: TEmpresaController;
begin
If FInstance = nil Then
begin
FInstance := untEmpresaController.TEmpresaController.Create();
end;
Result := FInstance;
---> Freeandnil(Finstance);
end;
Apenas acrescente isso ai que indiquei na seta --->
begin
If FInstance = nil Then
begin
FInstance := untEmpresaController.TEmpresaController.Create();
end;
Result := FInstance;
---> Freeandnil(Finstance);
end;
Apenas acrescente isso ai que indiquei na seta --->
GOSTEI 0
Pablo Ricardo
27/09/2016
Logo após criar vou destruir... seguindo seu exemplo, fiquei confuso. Não entendi. Poe explicar sua lógica?
GOSTEI 0