4
This proxy pattern example can be found on Wikipedia.
reference: http://en.wikipedia.org/wiki/Proxy_pattern
What I want to know is this:
- Why should I use this pattern? When should I use it? Why is it good?
- How would be a wrong way to make this pattern?
- There are flaws in this pattern?
- Something else to add?
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
}
}