Olá pessoal, estou estudando um pouco sobre o Padrão de Projeto Proxy e estou tendo dificuldades em achar conteúdos como artigos e matérias focadas nele, e o que mais estou com dificuldade é em achar algum código simples que possa mostra como é a imolementação deste padrão. Gostaria de uma ajuda sobre onde encontrar artigos e, se possível, alguém me mostre um código simples para mim visualizar como ele funciona.
Olá pessoal, estou estudando um pouco sobre o Padrão de Projeto Proxy e estou tendo dificuldades em achar conteúdos como artigos e matérias focadas nele, e o que mais estou com dificuldade é em achar algum código simples que possa mostra como é a imolementação deste padrão. Gostaria de uma ajuda sobre onde encontrar artigos e, se possível, alguém me mostre um código simples para mim visualizar como ele funciona.
O padrão Proxy é utilizado para esconder manipulações que acontecem antes , após, ou em vez dos métodos da classe normal.
O Java conta com a classe Proxy para fabricar proxies com base em interfaces.
O exemplo comum é do proxy remoto. Aqui vc trabalha com uma classe que tem a mesma interfaces que a classe original, mas
que na realidade é uma classe diferente que contêm um conjunto de mecanismo para se comunicar com a classe real.
P.S.
“para mim visualizar” ? outch! Em bold ? Duplo outch…
Não se usa pronome quando está falando de você mesmo.
Mas se quiser usar, use “eu”
“Gostaria de uma ajuda sobre onde encontrar artigos e, se possível, alguém me mostre um código simples para eu visualizar como ele funciona.”
H
hannibal_daturn
Hahaha, valeu pela “Aula de Português”, eu estava apressado e não vi esse “MIM” passando batido.
Bom, em relação a classe Proxy, a sua utilização necessitará de algum plugin para métodos ou funções próprias dela?
Quanto aos links, vou estudar o conteúdo dos mesmo e assim que eu tiver mais dúvidas eu posto aqui novamente.
Desde já agradeço.
Obrgado e fica com Deus… =D
H
hannibal_daturn
//Image.javaimportjava.util.*;interfaceImage{publicvoiddisplayImage();}//RealImage.javapublicclassRealImageimplementsImage{privateStringfilename;publicRealImage(Stringfilename){this.filename=filename;loadImageFromDisk();}privatevoidloadImageFromDisk(){// Potentially expensive operation// ...System.out.println("Loading "+filename);}publicvoiddisplayImage(){System.out.println("Displaying "+filename);}}//ProxyImage.javapublicclassProxyImageimplementsImage{privateStringfilename;privateImageimage;publicProxyImage(Stringfilename){this.filename=filename;}publicvoiddisplayImage(){if(image==null){image=newRealImage(filename);// load only on demand}image.displayImage();}}//ProxyExample.java publicclassProxyExample{publicstaticvoidmain(String[]args){ProxyImageimage1=newProxyImage("Imagem001.jpg");ProxyImageimage2=newProxyImage("Imagem002.jpg");ProxyImageimage3=newProxyImage("Imagem003.jpg");image1.displayImage();// loading necessaryimage2.displayImage();// loading necessaryimage2.displayImage();// no loading necessary; already done// the third image will never be loaded - time saved!}}
Eu vi este código num dos links que me passaram, e gostaria que vocês me mostrassem onde está aplicado o padrão proxy nele.
Se eu criar 3 classes ("A", "B" e "C") onde a classe "A" representa uma pessoa, a "B" representa o proxy e a "C" que executa o programa. Nesta situação, para "B" ser um proxy, deve fazer com que todos os objetos da classe "A" só seja acessado por "C" através da classe "B". É isso??? (me ajudem nessa explicação que me confundi eu acho, hehehe).
Desde já agradeço. Aguardo retorno seus.
Abraço e fiquem com Deus. =D
S
sergiotaborda
Sim. É isso.
(Esse é uma das possibilidades. Existem outras. Mas para entender o padrão é isso ai)
H
hannibal_daturn
sergiotaborda:
hannibal_daturn:
Eu vi este código num dos links que me passaram, e gostaria que vocês me mostrassem onde está aplicado o padrão proxy nele.
Se eu criar 3 classes (“A”, “B” e “C”) onde a classe “A” representa uma pessoa, a “B” representa o proxy e a “C” que executa o programa. Nesta situação, para “B” ser um proxy, deve fazer com que todos os objetos da classe “A” só seja acessado por “C” através da classe “B”. É isso??? (me ajudem nessa explicação que me confundi eu acho, hehehe).
Sim. É isso.
(Esse é uma das possibilidades. Existem outras. Mas para entender o padrão é isso ai)
Ok, me ajuda nesse código abaixo que montei. Ele está no padrão Proxy? Se sim, ele está muito notável?
Se você conseguir melhorar para melhor exemplificar o Padrão Proxy altera e me mostra ok?
//A.javapublicclassA{voidm1(){System.out.print("\n\t\tOlá. Seja bem vindo ao mundo JAVA!");}intm2(intp){p=p*10;returnp;}voidm3(Stringp){System.out.print(?MétodoqueCnãotemacesso.?);}}//B.javaclassB{Aa=newA();voidm1(){a.m1();}intm2(intp){return(a.m2(p));}}//C.javaimportjava.util.Scanner;publicclassC{publicstaticvoidmain(String[]args){Bb=newB();Scannerinput=newScanner(System.in);intp;b.m1();System.out.print("\n\tDigite um número:");p=input.nextInt();System.out.print("\n\t\tO resultado foi "+b.m2(p)+"!!!");}}
Obrigado pela atenção e paciência. Abraço e fica com Deus. =D
H
hannibal_daturn
Alguém sabe quando este modelo de Padrão de projeto é indicado e quais são suas contra-indicações???
Obrigado pela atenção. Fiquem com Deus. =D
S
sergiotaborda
Não tinha visto a sua resposta ( Um ano depois, mas o que conta é a intensão)
Esse B que vc desenhou ai usando o A não é um Proxy.
PAra ser um proxy B tem que ser um A. Ou seja B instanceof A tem que dar true.
A maneira fácil de fazer isso é usando herança directa B extends A outra forma é criar uma interface A e criar um B implements A e um X implements A onde X é o cara real e B é o Proxy.
Este padrão, tal como todos os padrões, é indicado para resolver um determinado problema. Sempre que vc precisar resolver esse problema, usar o padrão é indicado sem problemas. Sempre que vc o usar para resolver outros problemas, ai sim, tem todas as contra-indicações do mundo.
Padrões são como remédios. Têm que ser usados com cuidado, para o fim a que se destinam. Em caso de dúvida um médi… quer dizer - um desenvolvedor experiente deve ser consultado
R
ravisantos
sergiotaborda:
Não tinha visto a sua resposta ( Um ano depois, mas o que conta é a intensão)
Olá, uma pequena correção de português.O correto seria “intenção”, embora intensão também exista ela denota um outro significado o de intensidade, ou aumento de tensão, já “intenção” grafada com “ç” denota um resultado que se deseja atingir, um significado, ou o ato de escolher mentalmente um plano de ação a seguir.
Neste intervalo de tempo estudei um bocado diversos Padrões de Projeto (Design Partners) e com este conhecimento irei criar uns tópicos sobre cada um deles.