Duvidas Pattern Proxy  XML
Índice dos Fóruns » Metodologias de Desenvolvimento e Testes de Software
Autor Mensagem
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?
xjunior
JavaEvangelist
[Avatar]

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.
ViniGodoy
Moderador
[Avatar]

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
[WWW]
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?
xjunior
JavaEvangelist
[Avatar]

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.
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

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.
xjunior
JavaEvangelist
[Avatar]

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.
acidburn
HelloWorld

Membro desde: 08/04/2010 09:12:09
Mensagens: 11
Offline

Valeu pela dica, esta editado
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.
xjunior
JavaEvangelist
[Avatar]

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.
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 ?
xjunior
JavaEvangelist
[Avatar]

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.
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?
xjunior
JavaEvangelist
[Avatar]

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.
 
Índice dos Fóruns » Metodologias de Desenvolvimento e Testes de Software
Ir para:   
Powered by JForum 2.1.8 © JForum Team