| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/01/2010 19:07:38
|
hlegius
JavaChild
![[Avatar]](/images/avatar/0f20c77d6afb02422603acb0329b5a41.jpeg)
Membro desde: 07/05/2006 14:29:25
Mensagens: 126
Localização: Guarulhos, SP
Offline
|
Olá ! Estou para montar uma aplicação e uma das coisas que haverá é a autenticação de usuários. Como não é nada elegante - e funcional - meter lá na classe Usuario o campo login,senha - pensei no seguinte: classe Usuario - atributos do usuário e sua relação no sistema classe Login - dados para autenticação classe FoobarAutenticador - haveria métodos - a principio 1 só - para autenticação deste usuário Resumidamente seria: FoobarAutenticador.autentica(Login) : Usuario Tenta encontrar o usuário com o objeto Login, caso o encontre, retorna o Usuario com suas devidas informações para as camadas superiores. Neste caso o FoobarAutenticador atuaria como uma espécie de Serviço - juro que eu consigo vê-lo também como uma Facade, não sei... O que acham ?
This message was edited 1 time. Last update was at 03/01/2010 19:09:30
|
http://programe.me
Zend Certified Engineer
ArchLinux - A simple lightweight Linux Distribution |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/01/2010 09:12:02
|
osmio
Java Ninja
Membro desde: 22/08/2006 20:27:54
Mensagens: 252
Offline
|
Creio que a autenticação no sistema não seja "obrigação" de um objeto Usuario.
Portanto, a responsabilidade de fazer isso pertence ao sistema.
No seu caso, separar as obrigações faz muito sentido, mas, eu faria um pouco diferente.
Imagine o cenário:
Acho que o uso de componentização nesse caso faria mais sentido.
O Usuario nao sabe autenticar, mas sabe quem faz isso (no caso o autenticador).
At.
This message was edited 2 times. Last update was at 05/01/2010 09:06:00
|
"O pensamento lógico pode levar você de A a B, mas a imaginação te leva a qualquer parte do universo."
- Einstein, Albert |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/01/2010 22:17:08
|
hlegius
JavaChild
![[Avatar]](/images/avatar/0f20c77d6afb02422603acb0329b5a41.jpeg)
Membro desde: 07/05/2006 14:29:25
Mensagens: 126
Localização: Guarulhos, SP
Offline
|
Opa !
Cara, gostei da sua ideia !
Depois que estive vendo o livro do Fowler onde ele diz que - particularmente não gosta de Services, mesmo não tendo nada contra - fiquei a pensar em como eu poderia melhor desenhar as aplicações evitando ao máximo os Services.
Desta forma que você colocou eu estaria evitando aquele ciclo: Entidade; Service.metodo(recebeEntidade) : retornaEntidade.
Diga-me uma coisa: porque optou por fazer do autenticador uma variável de instância de Usuario ? Não poderia simplemente instanciá-la no Usuario.login() e um abraço ?
Valeu !
|
http://programe.me
Zend Certified Engineer
ArchLinux - A simple lightweight Linux Distribution |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/01/2010 09:04:06
|
osmio
Java Ninja
Membro desde: 22/08/2006 20:27:54
Mensagens: 252
Offline
|
hlegius wrote:Opa !
Cara, gostei da sua ideia !
Depois que estive vendo o livro do Fowler onde ele diz que - particularmente não gosta de Services, mesmo não tendo nada contra - fiquei a pensar em como eu poderia melhor desenhar as aplicações evitando ao máximo os Services.
Desta forma que você colocou eu estaria evitando aquele ciclo: Entidade; Service.metodo(recebeEntidade) : retornaEntidade.
Diga-me uma coisa: porque optou por fazer do autenticador uma variável de instância de Usuario ? Não poderia simplemente instanciá-la no Usuario.login() e um abraço ?
Valeu !
Services podem até ser úteis, desde que bem utilizados em seus casos específicos.
Deixar o autenticador como membro da classe te permite utilizar outros métodos específicos dele em outras parte da classe Usuario.
Apenas como mero exemplo, imagine a classe Usuario como segue:
Se voce deixar para instanciar o autenticador dentro do método login() por exemplo, teria que criar uma nova instancia dentro do método logout().
Fazendo assim, voce pode perfeitamente reutilizar seus objetos.
At.
This message was edited 2 times. Last update was at 05/01/2010 09:07:20
|
"O pensamento lógico pode levar você de A a B, mas a imaginação te leva a qualquer parte do universo."
- Einstein, Albert |
|
|
 |
|
|