| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2010 18:24:15
|
Astork
JavaGuru
Membro desde: 13/11/2008 17:14:18
Mensagens: 214
Localização: Curitiba
Offline
|
Ae galera, estou estudando padrões de projetos.. e estava lendo sobre o padrão Facade (Livro Use a Cabeça)
O livro cita este principio de projeto: "Principio do Minimo Conhecimento - só fale com seus amigos mais proximos"
E cita este exemplo
Comentário do livro: Aqui nos obtemos o objeto Thermometer de station e chamamos diretamente o seu metodo getTemperature();
Comentário do livro: Aplicando o principio, acrescentamos a classe Station um metodo que faz a solicitacao ao objeto Thermometer para nós. Isso reduz o numero de classes das quais dependemos
A duvida é o seguinte.. pelo que eu entendi, no exemplo com principio, ele criou um metodo getTemperature, e la dentro faz a chamada ao objeto Thermometer..., se o que entendi está certo.... não consegui perceber porque fazer isto.. já que o objeto que implementa este metodo vai ter que ter conhecimento da classe Thermometer do mesmo jeito.
Alguem sabe os beneficios deste principio, o padrao facade eu entendi bem, mas este principio falado no mesmo capitulo não entendi o real beneficio do mesmo.
Att
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2010 18:31:21
|
entanglement
GUJ Hacker
Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline
|
Quando você cria um método ou um construtor que recebe um objeto (criado sei lá como) que implementa a interface Temperature, permite que você possa usar algum framework de inversão de controle ou injeção de dependências. São eles que usam, na prática, esse tal princípio. Nesse caso, você não deveria ter de saber que é necessário criar um objeto do tipo Temperature (poderia ser um objeto que lhe passassem que só implementasse a interface Temperature, tal como "FahrenheitTemperature").
This message was edited 1 time. Last update was at 23/02/2010 18:32:33
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2010 18:53:41
|
Astork
JavaGuru
Membro desde: 13/11/2008 17:14:18
Mensagens: 214
Localização: Curitiba
Offline
|
entanglement, este caso então, faltou um pouco mais de detalhe do proprio livro !!!
pois imaginei o metodo getTemperature(); assim
Ou seja, apenas não está chamando no metodo getTemp, mas mesmo assim ainda preciso conhecero o Thermometer...
E segundo a sua explicação ficaria assim
Ou até passar o InterfaceThermometer no construtor etc.. o que fica a mesma coisa que o metodo.. seria isto?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2010 22:39:36
|
ffranceschi
JavaChild
![[Avatar]](/images/avatar/c80bfa00454a7564c07c0559808294fa.jpg)
Membro desde: 23/08/2006 11:07:21
Mensagens: 130
Offline
|
"Principio do Minimo Conhecimento - só fale com seus amigos mais proximos"
Esse principio é para voce minimizar o acoplamento entre as classes... procure por Law of Demeter
Tem livros que falam sobre isso ... Code Complete, Pragmatic Programmer, Clean Code...
Abraços
|
Fernando Franceschi
Blog - http://ffranceschi.wordpress.com/
Twitter - http://twitter.com/ffranceschi1 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2010 23:15:44
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
Astork wrote:Ae galera, estou estudando padrões de projetos.. e estava lendo sobre o padrão Facade (Livro Use a Cabeça) O livro cita este principio de projeto: "Principio do Minimo Conhecimento - só fale com seus amigos mais proximos" E cita este exemplo Comentário do livro: Aqui nos obtemos o objeto Thermometer de station e chamamos diretamente o seu metodo getTemperature(); Comentário do livro: Aplicando o principio, acrescentamos a classe Station um metodo que faz a solicitacao ao objeto Thermometer para nós. Isso reduz o numero de classes das quais dependemos A duvida é o seguinte.. pelo que eu entendi, no exemplo com principio, ele criou um metodo getTemperature, e la dentro faz a chamada ao objeto Thermometer..., se o que entendi está certo.... não consegui perceber porque fazer isto.. já que o objeto que implementa este metodo vai ter que ter conhecimento da classe Thermometer do mesmo jeito. Alguem sabe os beneficios deste principio, o padrao facade eu entendi bem, mas este principio falado no mesmo capitulo não entendi o real beneficio do mesmo. Att
O principio é relacionado ao que vc está fazendo não ao como. O que está sendo dito é: se vc quer saber a temperatura na estação, pergunte À estação. Não tente perguntar a alguem a estação tem. Visto por outro lado : como a estação sabe a temperatura ? Resposta: não importa. O que importa é que eu posso saber a temperatura na estação. O como isso é feito na implementação é irrelevante. E é irrelevante porque ira´mudar. Desenhar as classes com base nesse principio nada mais é do que desacoplar corretamente. No caso em particular a estação tem um termometro e o usa para saber a temperatura. em um outro caso a estação simplesmente retorna um valor fixo, etc... Básicamente , o principio tem que ver com não navegar na estrutura de objetos associados. Quanto mais vc usa o operador ponto, mais acoplado vc estará Outro exemplo seria saber a idade de uma pessoa vc pode fazer pessoa.getIdade(hoje) ou vc pode fazer Na segunda forma vc precisa saber que a pessoa tem uma propriedade data de nascimento. No primeiro não. Embora a pessoa continue tendo esse atributo, ele não é usado directamente. Se eu resolver colocá-lo como privado isso não afetará em nada o codigo que quer saber a idade da pessoa. é por isso que se fala tanto que os get/set são "evil'. Eles são a forma mais forte de acoplamento.
This message was edited 1 time. Last update was at 23/02/2010 23:16:00
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/02/2010 12:54:12
|
Astork
JavaGuru
Membro desde: 13/11/2008 17:14:18
Mensagens: 214
Localização: Curitiba
Offline
|
Valeu pessoal pelas respostas/dicas.. !!!
O Exemplo do livro acho que poderia ser um pouco mais detalhado... demonstrando assim como vcs citaram.. mas é isto ae..
Valeu. Att
|
|
|
 |
|
|