This example proxy pattern can be found on Wikipedia.
reference: link
What I want to know is this:
Example:
import java.util.*;
interface Imagem {
public void mostrarImagem();
}
// no Sistema A
class ImagemReal implements Imagem {
private String nomeDoArquivo;
public ImagemReal(String nomeDoArquivo) {
this.nomeDoArquivo = nomeDoArquivo;
carregarImagemDoDisco();
}
private void carregarImagemDoDisco() {
System.out.println("Carregando " + nomeDoArquivo);
}
public void mostrarImagem() {
System.out.println("Mostrando " + nomeDoArquivo);
}
}
// no Sistema B
class ImagemProxy implements Imagem {
private String nomeDoArquivo;
private Imagem imagem;
public ImagemProxy(String nomeDoArquivo) {
this.nomeDoArquivo = nomeDoArquivo;
}
public void mostrarImagem() {
if(imagem == null)
imagem = new ImagemReal(nomeDoArquivo);
imagem.mostrarImagem();
}
}
class ExemploProxy {
public static void main(String[] args) {
Imagem imagem1 = new ImagemProxy("ResOi_10MB_Foto1");
Imagem imagem2 = new ImagemProxy("ResOi_10MB_Foto2");
imagem1.mostrarImagem(); // é necessário o carregamento
imagem1.mostrarImagem(); // não é necessário o carregamento
imagem2.mostrarImagem(); // é necessário o carregamento
imagem2.mostrarImagem(); // não é necessário o carregamento
imagem2.mostrarImagem(); // não é necessário o carregamento
imagem1.mostrarImagem(); // não é necessário o carregamento
}
}