Baixe o app para aproveitar ainda mais
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" ); } } }
Compartilhar