2
respostas

Classe AutenticacaoHelper

Porque ela foi declara na classe parceiro comercial como privada? Poderia, por exemplo, dentro do método autenticar. return new AutenticacaoHelper().Autenticar(Senha, senha);

2 respostas

Olá Diego, tudo certo?

Para isso acontecer, esse método deveria ser estático. Mas aí poderia ter problemas, pois poderia haver algum conflito em relação a dois usuários tentarem fazer a verificação de senhas com um intervalo pequeno de tempo. Se a verificação do primeiro usuário retornar false e a do segundo retornar true, a resposta poderia chegar como true para o primeiro usuário.

Então, o motivo deste campo privado é isolar a verificação para cada usuário. Com isso, o compilador instanciará um objeto novo para cada vez que a classe for chamada. Então, apenas a própria classe poderá alterar o estado deste objeto.

Espero ter ajudado!

Segue o código da minha dúvida.

public class ParceiroComercial : IAutenticavel
    {
        private AutenticacaoHelper _autenticacaoHelper = new AutenticacaoHelper();
        public string Senha { get; set; }

        public bool Autenticar(string senha)
        {
            return _autenticacaoHelper.CompararSenhas(Senha, senha);
        }

        public bool AutenticarDuvida(string senha)
        {
            return new AutenticacaoHelper().CompararSenhas(Senha, senha);
        }
    }

ou seja, se eu escreve o código conforme o método "AutenticarDuvida" eu tenho problema de concorrência ?