| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 09:18:00
|
acidburn
HelloWorld
Membro desde: 08/04/2010 09:12:09
Mensagens: 11
Offline
|
Olha se alguém puder me explicar qual a verdadeira finalidade do Pattern Proxy eu agradeço, ja pesquisei e não encontrei nenhum o unico que vi não teve resposta.
nas pesquisas que realizei encontrei que o pattern proxy encapsula uma classe a qual ele faz referencia e deve utilizar-se da mesma interface de tal classe,
existe o proxy remoto, virtual proxy, mas preciso saber a necessidade de se utilizar o proxy?
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 09:45:33
|
xjunior
JavaEvangelist
![[Avatar]](/images/avatar/7d5e16c1a728cb7d3e40ffa4eadb67ab.png)
Membro desde: 26/08/2009 15:49:19
Mensagens: 321
Localização: Belo Horizonte - MG
Offline
|
Imagine que vc possui um objeto ou método que é altamente custoso ou complexo, e ainda, vc fará esta implementação em diferentes partes do seu código. Então o pattern proxy é recomendado para isto, em situações em que várias cópias que deve existir um objeto complexo, ele pode ser adaptado para incorporar o padrão de contrapeso, a fim de reduzir o consumo de memória da aplicação e consequentemente melhorar a performance e auxiliar na melhoria da manutenabilidade. Ele funciona da seguinte forma: Uma instância do objeto complexo é criado e são criados vários objetos proxy, pelos quais contêm uma única referência ao objeto original complexo e todas as interações com os objetos proxys são interadas ao objeto original complexo, uma vez que quando se utiliza os objetos proxys é liberada a memória do objeto complexo, uma vez que estes estão fora do escopo. Não sei se fui claro o suficiente, mas creio que era esta explicação que vc queria, ok?
This message was edited 3 times. Last update was at 08/04/2010 09:49:37
|
acessem um dos melhores foruns de TI: http://www.clubedaprogramacao.com/forum/
Always code as if the person who will maintain your code is a maniac serial killer that knows where you live. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 09:56:49
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Online
|
O proxy é uma classe que controla acesso à outra classe.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 09:57:16
|
acidburn
HelloWorld
Membro desde: 08/04/2010 09:12:09
Mensagens: 11
Offline
|
Bem não sei se compreendi bem o que você disse, mas então que dizer que funciona assim exemplo:
Tenho uma classe que busca no banco uma imagem muito grande, então crio um proxy desta classe assim posso Instanciar o objeto real pela proxy somente quando necessário asim não alocando a memória antecipadamente
seria isso?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 10:12:09
|
xjunior
JavaEvangelist
![[Avatar]](/images/avatar/7d5e16c1a728cb7d3e40ffa4eadb67ab.png)
Membro desde: 26/08/2009 15:49:19
Mensagens: 321
Localização: Belo Horizonte - MG
Offline
|
acidburn wrote:Bem não sei se compreendi bem o que você disse, mas então que dizer que funciona assim exemplo: Tenho uma classe que busca no banco uma imagem muito grande, então crio um proxy desta classe assim posso Instanciar o objeto real pela proxy somente quando necessário asim não alocando a memória antecipadamente seria isso?
???? leia atentamente o que eu escrevi, se não entender, vou dar um exemplo mais simples, vc quer uma implementação para vc testar?
This message was edited 1 time. Last update was at 08/04/2010 13:47:10
|
acessem um dos melhores foruns de TI: http://www.clubedaprogramacao.com/forum/
Always code as if the person who will maintain your code is a maniac serial killer that knows where you live. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 10:20:45
|
acidburn
HelloWorld
Membro desde: 08/04/2010 09:12:09
Mensagens: 11
Offline
|
O exemplo que estou tentando intender:
exemplo tirado do DevMedia postado por Ricardo Rodrigues
This message was edited 1 time. Last update was at 08/04/2010 10:29:34
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 10:24:44
|
acidburn
HelloWorld
Membro desde: 08/04/2010 09:12:09
Mensagens: 11
Offline
|
Segue explicação: do mesmo lugar referenciado a cima
Abaixo a saída do programa:
select * from PESSOA where id=A
Retornou a pessoa do banco de dados -> Pessoa A
Nome: Pessoa A
select * from PESSOA where id=B
Retornou a pessoa do banco de dados -> Pessoa B
Nome: Pessoa B
Nome: Pessoa A
Id da 3ª ? C
Conforme demonstrado no exemplo, uma consulta no banco de dados é realizada apenas quando o método ?getNome? da Pessoa é chamado. O Proxy controla este acesso, controlando a consulta para esta ser realizada apenas uma vez.
Note que o método ?pessoas.get(2).getId()? foi chamado para imprimir o ID da ?Pessoa C?, e isto não inicializou o proxy.
Þ Lembre-se: o importante é que o Proxy e o objeto real que está sendo encapsulado devem implementar a mesma interface.
Conclusão
O Pattern Proxy é muito utilizado em aplicações J2EE e por alguns frameworks, espero que tenham gostado deste breve artigo, e até a próxima.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 10:28:46
|
xjunior
JavaEvangelist
![[Avatar]](/images/avatar/7d5e16c1a728cb7d3e40ffa4eadb67ab.png)
Membro desde: 26/08/2009 15:49:19
Mensagens: 321
Localização: Belo Horizonte - MG
Offline
|
mano, favor editar seu post e colocar o código fonte dentro da tag "code"..
|
acessem um dos melhores foruns de TI: http://www.clubedaprogramacao.com/forum/
Always code as if the person who will maintain your code is a maniac serial killer that knows where you live. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 10:29:59
|
acidburn
HelloWorld
Membro desde: 08/04/2010 09:12:09
Mensagens: 11
Offline
|
Valeu pela dica, esta editado
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 10:31:02
|
pedro.lamarao
What is classpath?
Membro desde: 08/04/2010 10:23:52
Mensagens: 7
Offline
|
Um bom exemplo de aplicação de Proxy para funcionalidade, ao invés de economia, ocorre em frameworks de "remoting".
Como uma referência direta à memória de outro processo é impossível, o programa local faz referência a um objeto Proxy ao invés; e o Proxy oculta a solução para o problema de comunicação entre processos.
Qualquer objeto que está para um sistema externo -- como um conector de banco de dados -- pode ser considerado um Proxy do sistema externo no programa local.
Note que "proxy" é inglês para "procurador" -- uma pessoa legalmente habilitada a agir em nome de outra.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 10:43:59
|
xjunior
JavaEvangelist
![[Avatar]](/images/avatar/7d5e16c1a728cb7d3e40ffa4eadb67ab.png)
Membro desde: 26/08/2009 15:49:19
Mensagens: 321
Localização: Belo Horizonte - MG
Offline
|
então, de forma resumida:: Um proxy é um "passo" intermediário de um fluxo. O proxy determina quando o objeto deve ser construído ou representado. O Proxy serve para criar um substituto do objeto original. Acho que entendi a sua concepção, vc disse sobre a imagem pois vc quer criar um objeto proxy para gerenciar a carga da imagem, aí sim está correto, o proxy pode te ajudar nisso... Proxy remoto (Remote Proxy) - providencia um representante local de um objeto que se encontra num espaço de endereçamento diferente. Proxy virtual (Virtual Proxy)- cria objetos dispendiosos apenas por pedido (on demand). Proxy de proteção (Protection Proxy)- controla o acesso ao objeto original. Qual tipo vc está querendo implementar?
This message was edited 1 time. Last update was at 08/04/2010 10:44:59
|
acessem um dos melhores foruns de TI: http://www.clubedaprogramacao.com/forum/
Always code as if the person who will maintain your code is a maniac serial killer that knows where you live. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 10:44:13
|
acidburn
HelloWorld
Membro desde: 08/04/2010 09:12:09
Mensagens: 11
Offline
|
pedro.lamarao wrote:Um bom exemplo de aplicação de Proxy para funcionalidade, ao invés de economia, ocorre em frameworks de "remoting".
Como uma referência direta à memória de outro processo é impossível, o programa local faz referência a um objeto Proxy ao invés; e o Proxy oculta a solução para o problema de comunicação entre processos.
Qualquer objeto que está para um sistema externo -- como um conector de banco de dados -- pode ser considerado um Proxy do sistema externo no programa local.
Note que "proxy" é inglês para "procurador" -- uma pessoa legalmente habilitada a agir em nome de outra.
O que não consigo compreender é como você disse o Proxy é um procurador, porém nos exemplos que eu li, entendi que o proxy esta agindo como um intermediário em um determinado momento assim chamando uma classe para executar algo, como no exemplo a cima onde a classe proxy se não me engano é utilizada para realizar a consulta no banco me corrijam se estiver errado, mas qual a necessidade disso ?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 10:57:13
|
xjunior
JavaEvangelist
![[Avatar]](/images/avatar/7d5e16c1a728cb7d3e40ffa4eadb67ab.png)
Membro desde: 26/08/2009 15:49:19
Mensagens: 321
Localização: Belo Horizonte - MG
Offline
|
Na verdade, no seu exemplo o proxy é usado como um intermediário entre a consulta com o banco de dados, pois observe que na sua interface existe os métodos que devem ser implementados, e na sua classe ProxyPessoa implementa os métodos em comum com a classe PessoaImpl, realizando assim um proxy encapsula o PessoaImpl e vc usa na verdade o proxy.
Estude também os outros padrões estruturais, pois a filosofia deles são bem parecidas, e outros que são muito usados são pattern adpater e o decorator.
|
acessem um dos melhores foruns de TI: http://www.clubedaprogramacao.com/forum/
Always code as if the person who will maintain your code is a maniac serial killer that knows where you live. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 11:02:41
|
acidburn
HelloWorld
Membro desde: 08/04/2010 09:12:09
Mensagens: 11
Offline
|
xjunior wrote:Na verdade, no seu exemplo o proxy é usado como um intermediário entre a consulta com o banco de dados, pois observe que na sua interface existe os métodos que devem ser implementados, e na sua classe ProxyPessoa implementa os métodos em comum com a classe PessoaImpl, realizando assim um proxy encapsula o PessoaImpl e vc usa na verdade o proxy.
Estude também os outros padrões estruturais, pois a filosofia deles são bem parecidas, e outros que são muito usados são pattern adpater e o decorator.
mas xjunior o que não compreendo é o por que de usar isso, pois nunca implementei isso é um trabalho que estou fazendo então para realizar isso que esta acontecendo eu utilizo observer e oservable no mvc então o por que devo encapsular a classe PessoaImpl para realizar a consulta?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 11:13:14
|
xjunior
JavaEvangelist
![[Avatar]](/images/avatar/7d5e16c1a728cb7d3e40ffa4eadb67ab.png)
Membro desde: 26/08/2009 15:49:19
Mensagens: 321
Localização: Belo Horizonte - MG
Offline
|
Bom amigo, lembre-se que o observer é um padrão comportamental e não estrutural, visite este link que irá dar uma visão semântica sobre os design patterns e como utilizá-los, não tem implementação, mas é excelente fonte para vc saber o que é e como implementar. http://www.pg.cefetpr.br/coinf/simone/patterns/
This message was edited 1 time. Last update was at 08/04/2010 11:13:43
|
acessem um dos melhores foruns de TI: http://www.clubedaprogramacao.com/forum/
Always code as if the person who will maintain your code is a maniac serial killer that knows where you live. |
|
|
 |
|
|