Tenho uma classe chamada SecurityEngine, ainda sendo desenvolvidas
várias classes precisam acessar métodos dela para carregar os roles e rules da aplicação. essa classe ira concentrar os dados sobre autenticação e autorização
O fato é que vários mecanismos de controle de acesso a recursos restritos (ex: un filter que impede pessoas não autenticadas acessarem a pasta /admin/*) irão precisar acessar os recursos dessa classe (ex. chamando métodos como por exemplo: getRole, getRule, etc)
eu pensei em deixar todos os métodos como estáticos
mas eu vejo que isso não é muito usado, parece meio feio, inflexível…
Injecao de dependencias - faca com que todas as classes que precisam dessa SecurityEngine recebam uma instancia dela (seja pelo construtor ou atraves de setters). Voce tambem pode usar um singleton, mas nao eh uma boa ideia, apesar do codigo ficar mais simples (e simplorio).
Pq singletons nunca sao uma boa ideia a nao ser em casos muito especificos (eu consigo entender que se use singleton numa classe que representa um dispositivo de hardware, como uma impressora, por exemplo). Tente fazer um teste unitario de um singleton, e vc vai entender mais ou menos o ponto. Voce esta, basicamente, bolando uma classe global, com estado global, o que quase nunca eh uma boa pedida.
[Singleton] Porque usar Singleton comov ariavel global eh besteira:
1 - Você está deturpando o pattern
2 - Você está usando variáveis globais, o que quase sempre eh ruim
[microfilo]
Não. A Factory préconfigura a isntância, ams não necessariamente ela é um singleton. Se o objeto for stateless, você pode até usar um só para todos os clientes, mas cuidado.