Newsgroup: it.comp.java
Titolo: Applicazione che condivide con static, si/no? Consigli?

Ciao a tutti,
vi pongo il mio problema:
Io e il mio gruppo di programmazione stiamo svilppando un programma con 
interfaccia grafica, quest'ultima separata dalle funzionalità dello stesso.
Ora, per far comunicare GUI e il resto delle funzionalità usiamo una 
classe Settings con metodi statici per settare ed usare valori comuni 
all'intero programma.
"Un esempio: parte il programma, chiamiamo Settings.init() che va a 
caricare da file di testo tutte le nostre variabili e strutture dati, 
poi parte la GUI, se facciamo modifiche viene fatto un'update alla 
struttura dati interessata dentro Settings (con metodi statici) e 
dopodiche andiamo a salvare su file."
Siamo a conoscenza che usare metodi statici non sia la cosa ottimale, ma 
l'alternativa sarebbe quella di passare a cascata l'oggetto Settings, 
un'altra cosa che non ci sembra ottimale...
C'è qualche altra modo per ovviare al nostro "problema"? O la soluzione 
addottata può andare bene?!
Ho cercato di essere il più breve possibile, spero cmq di essermi 
spiegato :)
Grazie anticipatamente per ogni risposta,
Andrea

 addottata puň andare bene?!
vi consiglio di dare una occhiata al pattern MVC (model view control)...
-- 
{2Nd+BESt}

 spiegato :)
Sì, ti sei spiegato e anche bene :)
Se la tua classe Settings ha uno stato, come si evince dalla tua
spiegazione, ti consiglio di utilizzare il pattern "Singleton" e, cosa
MOLTO importante, di sincronizzare tutti i metodi che accedono in
lettura/scrittura allo stato del tuo oggetto Settings.
Per maggiori informazioni sul pattern, puoi dare un'occhiata qui:
http://radio.weblogs.com/0122027/stories/2003/10/20/implementingTheSingletonPatternInJava.html
Spero di esserti stato d'aiuto,
Un saluto,
Sergio B.
-- 
Sergio Bossa
Author and Developer of:
- Montag, Web Services System for XML Database Interaction:
 
http://montag.sourceforge.net
- QuickNote:
 
http://quicknote.sourceforge.net


Ho trovato questo: 
http://csis.pace.edu/~bergin/mvc/mvcgui.html
Ci ho dato una letta veloce, ma non mi pare quel che intendevo io, ne 
senso che, se ho capito bene, in funzione di una modifica a qualcosa mi 
si modifica un'altra cosa (gui ad esempio)
Quello che chiedevo io era un modo per avere dei setting centralizzati 
accessibili da piů classi (variabili coondivise insomma).
Se invece sbaglio e quella consigliatami č proprio la soluzione al mio 
problema vedrň di approfondire...
Grazie,
Andrea


Ho trovato questo: 
http://csis.pace.edu/~bergin/mvc/mvcgui.html


 accessibili da più classi (variabili coondivise insomma).
no no ho sbagliato io!
-- 
{2Nd+BESt}

 
Ecco questo credo sia proprio la via corretta :)
Quindi fare la classe Settings con metodi statici non è stato un errore, 
dobbiamo però usare:
	- pattern SINGLETON
	- sincronizzare i metodi
Ora non ho ancora idea di cosa siano queste due tecniche O_o e di come 
si implementino, però se a quel link trovo tutte le informazioni vedrò 
di darci un'approfondita letta :)
(se avete altre informazioni utili per queste soluzioni.......ben 
vengano ;) )
Grazie ancora,
Andrea

 vengano ;) )
Se vuoi approfondire il pattern Singleton:
http://www.javaworld.com/javaworld/jw-01-2001/jw-0112-singleton.html
http://www.javaworld.com/javaworld/jw-04-2003/jw-0425-designpatterns.html
Per quanto riguarda la sincronizzazione dei metodi puoi iniziare da qui:
http://java.sun.com/docs/books/tutorial/essential/threads/index.html
E seguire il cammino della lezione.
Buon lavoro,


 
La sincronizzazione falla solo se nella tua applicazione hai più Thread
che possono accedere all'istanza di Settings, altrimenti non farlo...
-- 
Pietro	- 
http://www.pietroweb.tk
Linux Registered User #304991
Powered by MDK Linux Kernel 2.6.10

 
Nella mia applicazione ho si un thread che parte quando dalla GUI clicco 
su check e incomincia a controllare se ci sono degli errori nei valori 
di una file XML... In questo modo la GUI non mi rimane in freeze...
Immagino che in questo caso non serva la sincronizzazione, giusto?!?!
Grazie,
Andrea



Se anche il Thread principale accede all'istanza serve, altrimenti solo un
thread ci accede e non serve..
Se però c'è la possibilità che dalla GUI puoi avviare più thread in
sequenza che modificano l'oggetto allora serve se almeno un thread ci
accede in scrittura.
Se tutti i thread leggono solo allora non serve.
