|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jul 2012
Messaggi: 4
|
[JAVA] Dubbio su come evitare GUI "hard-coded"
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. |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Jul 2012
Messaggi: 4
|
La mia scelta è ricaduta sull'opzione 2 (classe con metodo statico). Convinto di aver fatto la scelta più sensata oggi vado dal prof per esternare altri dubbi (l'applicazione è un progetto didattico) e con l'occasione gli ho esposto il dilemma di prima (maledetto a me che l'ho fatto)... l'unica risposta che ho avuto è "valuta la scelta migliore, ma stia attento ai principi OO dunque anche al riuso". Ho provato a vedere situazioni simili su internet ma non ho trovato niente che potesse aiutarmi.
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22462
|
anche io solitamente opto per la seconda versione.
Anche se, al posto delle properties, in caso il programma abbia usi un db preferisco farmi una tabella apposta.
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
|
edit
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight Ultima modifica di demos88 : 10-07-2012 alle 17:07. |
|
|
|
|
|
#5 | |
|
Junior Member
Iscritto dal: Jul 2012
Messaggi: 4
|
Grazie per la risposta.
E come giudichi l'idea della classe Utility (eventualmente con blocco synchronized)? Quote:
Inoltre, dopo una richiesta da parte di una view, cosa faccio con i dati caricati (cioè etichette) ?? Li mantengo in una struttura utile per le chiamate successive, così da evitare (ad una futura richiesta) una nuova lettura da file (simile Proxy)?? O no?? |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:44.



















