Buscar

padrão de projeto flyweight - exemplo 1

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

sem aplicação do flyweight
class Corredor{
 private int inscricao = 0;
 private String categoria = "";
 private double tempo = 0.0;
 public int GetInscricao(){return inscricao;}
 public void SetInscricao(int in){this.inscricao = in;}
 public String GetCategoria(){return categoria;}
 public void SetCategoria(String cat){this.categoria = cat;}
 public double GetTempo(){return tempo;}
 public void SetTempo(double temp){this.tempo = temp;}
}
public class Main {
static final int size = 10000;
static final int cat_prof = 1000;
static final int cat_amador = 3000 + cat_prof;
 public static void main(String[] args) {
 //Array com 10.000 corredores, logo, 10.000 objetos
 Corredor array[] = new Corredor[size];
 for(int i = 0; i < size; i++){
 array[i] = new Corredor();
 }
 for(int i = 0; i < size; i++){
 //Corredor aux = array[i];
 array[i].SetInscricao(i);
 array[i].SetTempo(i + 0.1);
 if (i < cat_prof) array[i].SetCategoria("Profissional");
 else{ if (i < cat_amador) array[i].SetCategoria("Amador");
 else array[i].SetCategoria("Livre");
 }
 }
 for(int i = 0; i < size; i++){
 System.out.println("Inscrição: " + array[i].GetInscricao() +
 " Categoria: " + array[i].GetCategoria() +
 " Tempo: " + array[i].GetTempo() + "\n"
 );
 }
 }
}
========================================================================
Aplicando o flyweight
class ConcreteCorredor{
 static final int size = 10000;
 static int[] inscricao = new int[size] ;
 static String[] categoria = new String[size];
 static double[] tempo = new double[size];
 static{
 for(int x = 0; x < size; x++){
 inscricao[x] = x;
 }
 }
}
class UnsharedCorredor{
 UnsharedCorredor(){}
 
 public static int GetInscricao(int in){return ConcreteCorredor.inscricao[in];}
 public static void SetInscricao(int in){ConcreteCorredor.inscricao[in] = in;}
 public static String GetCategoria(int id){return ConcreteCorredor.categoria[id];}
 public static void SetCategoria(int id, String cat){ConcreteCorredor.categoria[id] = cat;}
 public static double GetTempo(int id){return ConcreteCorredor.tempo[id];}
 public static void SetTempo(int id, double temp){ConcreteCorredor.tempo[id] = temp;}
}
public class Main {
 static final int cat_prof = 1000;
 static final int cat_amador = 3000 + cat_prof;
 public static void main(String[] args) {
 
 for(int i = 0; i < ConcreteCorredor.size; i++){
 UnsharedCorredor.SetInscricao(i);
 UnsharedCorredor.SetTempo(i,i + 0.1);
 if (i < cat_prof) UnsharedCorredor.SetCategoria(i,"Profissional");
 else{ if (i < cat_amador) UnsharedCorredor.SetCategoria(i,"Amador");
 else UnsharedCorredor.SetCategoria(i,"Livre");
 }
 }
 for(int i = 0; i < ConcreteCorredor.size; i++){
 System.out.println("Inscrição: " + UnsharedCorredor.GetInscricao(i) +
 " Categoria: " + UnsharedCorredor.GetCategoria(i) +
 " Tempo: " + UnsharedCorredor.GetTempo(i) + "\n"
 );
 }
 }
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais