duald
07-07-2012, 16:24
Salve a tutti.
Sto realizzando un programma con interfaccie grafiche, e mi chiedevo come evitare hard-coded. In particolare voglio evitare di impostare la proprieta Text dei Component direttamente dal codice.
La scelta è ricaduta sui file properties, così colgo l'occasione anche di rendere il programma i18n.
Il dubbio che mi sorge è come implementare la classe :
1 - definisco un interfaccia
public interface I_TextGUI{
public static final int MAIN = 0;
...
public String[] getEtichetette(int whichGUI);
}
che viene estesa dalla classe :
public class TextGUIProperties1 implements I_TextGUI{ }
2 - creare solo la classe
public class TextGUIProperties2 {
public static final int MAIN = 0;
...
public static String[] getEtichetette(int whichGUI){}
}
La soluzione 1 favorisce il riuso (forse ... spero) se la fonte dati dovesse cambiare; lo svantaggio è che ogni view deve avere un riferimento ad un oggetto della classe TextGUIProperties1 che opera allo stesso modo è che non ha stato.
Soluzione 2 l'esatto opposto.
Un possibile compromesso penso che sia la definizione di una classe di Utility
public class Utility{
private static I_TextGUI textGUI;
public static I_TextGUI getTextGUI(){ return textGUI;}
public static void setTextGUI(I_TextGUI textGUI){
Utility.textGUI = textGUI;
}
..//eventuali altri metodi
}
dove I_TextGUI viene impostato nel main.
Però questa soluzione mi sembra che tende ad una proliferazione delle classi.
Come vedete sono un pò confuso, spero in un vostro aiuto.
Sto realizzando un programma con interfaccie grafiche, e mi chiedevo come evitare hard-coded. In particolare voglio evitare di impostare la proprieta Text dei Component direttamente dal codice.
La scelta è ricaduta sui file properties, così colgo l'occasione anche di rendere il programma i18n.
Il dubbio che mi sorge è come implementare la classe :
1 - definisco un interfaccia
public interface I_TextGUI{
public static final int MAIN = 0;
...
public String[] getEtichetette(int whichGUI);
}
che viene estesa dalla classe :
public class TextGUIProperties1 implements I_TextGUI{ }
2 - creare solo la classe
public class TextGUIProperties2 {
public static final int MAIN = 0;
...
public static String[] getEtichetette(int whichGUI){}
}
La soluzione 1 favorisce il riuso (forse ... spero) se la fonte dati dovesse cambiare; lo svantaggio è che ogni view deve avere un riferimento ad un oggetto della classe TextGUIProperties1 che opera allo stesso modo è che non ha stato.
Soluzione 2 l'esatto opposto.
Un possibile compromesso penso che sia la definizione di una classe di Utility
public class Utility{
private static I_TextGUI textGUI;
public static I_TextGUI getTextGUI(){ return textGUI;}
public static void setTextGUI(I_TextGUI textGUI){
Utility.textGUI = textGUI;
}
..//eventuali altri metodi
}
dove I_TextGUI viene impostato nel main.
Però questa soluzione mi sembra che tende ad una proliferazione delle classi.
Come vedete sono un pò confuso, spero in un vostro aiuto.