Padrão de Projeto Proxy - Help me! / Ajuudaaa!

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.

Aguardo ajuda de todos.

Obrigado e fiquem com Deus… :smiley:

[quote=hannibal_daturn]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.
[/quote]

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.

http://en.wikipedia.org/wiki/Proxy_pattern
http://sergiotaborda.wordpress.com/java/patterns/adapter/

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

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

[code]//Image.java
import java.util.*;

interface Image {
public void displayImage();
}

//RealImage.java
public class RealImage implements Image {
private String filename;
public RealImage(String filename) {
this.filename = filename;
loadImageFromDisk();
}

private void loadImageFromDisk() {
    // Potentially expensive operation
    // ...
    System.out.println("Loading   "+filename);
}

public void displayImage() { System.out.println("Displaying "+filename); }

}

//ProxyImage.java
public class ProxyImage implements Image {
private String filename;
private Image image;

public ProxyImage(String filename) { this.filename = filename; }
public void displayImage() {
    if (image == null) {
        image = new RealImage(filename); // load only on demand
    }
    image.displayImage();
}

}

//ProxyExample.java
public class ProxyExample {
public static void main(String[] args) {
ProxyImage image1 = new ProxyImage(“Imagem001.jpg”);
ProxyImage image2 = new ProxyImage(“Imagem002.jpg”);
ProxyImage image3 = new ProxyImage(“Imagem003.jpg”);

    image1.displayImage(); // loading necessary
    image2.displayImage(); // loading necessary
    image2.displayImage(); // no loading necessary; already done
    // the third image will never be loaded - time saved!
}

}[/code]

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

Sim. É isso.
(Esse é uma das possibilidades. Existem outras. Mas para entender o padrão é isso ai)

[quote=sergiotaborda][quote=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).
[/quote]

Sim. É isso.
(Esse é uma das possibilidades. Existem outras. Mas para entender o padrão é isso ai)
[/quote]

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.java
public class A {   
    void m1() {
	System.out.print("\n\t\tOlá. Seja bem vindo ao mundo JAVA!");
    }   
    int m2(int p) {
	p = p*10;
	return p;
    }   
    void m3(String p) {
	System.out.print(?Método que C não tem acesso.?);
    }   
}

//B.java
class B {   
    A a = new A();   
    
    void m1(){  
	a.m1();
    }
    int m2(int p){
    	   
	return (a.m2(p));
    }     

}

//C.java
import java.util.Scanner;  
public class C {   
  
    public static void main(String[] args) {   
      B b = new B(); 
      Scanner input = new Scanner(System.in);
      int p;
	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

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

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

[quote=sergiotaborda]Não tinha visto a sua resposta ( Um ano depois, mas o que conta é a intensão)

[/quote]

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.

http://pt.wiktionary.org/wiki/intenção
http://pt.wiktionary.org/wiki/intensão

Obrigado a todos pela ajuda que me deram.

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.

Mais uma vez obrigado a todos pela ajuda.

Abraço e fiquem com Deus. :smiley: