Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [JAVA] Condividere dati tra classi

    Salve.
    Avrei un quesito al quale non so trovare una risposta ottimale.
    Io devo realizzare un'applicazione nella quale più classi devono interagire indipendentemente (saranno realizzate alla fine come Thread) e devono poter avere a disposizione delle impostazioni, settate all'avvio dell'applicazione, che dovranno essere condivise da tutte le classi.

    Quale metodo mi consigliate per realizzare ciò:

    - creare una classe static (che non ho mai utilizzato)
    - creare una classe con metodi static (in pratica la stessa cosa) da richiamare ogni volta,
    - creare una classe "normale" e passarla (sottoforma di oggetto) a tutte le classi in fase di costruzione.

    Io puntavo più su una delle prime 2 opzioni, potendo così riferirmi sempre allo stesso "nomeClasse" senza ogni volta ricreare l'oggetto.
    La terza la eviterei per motivi di praticità.
    Ovviamente i dati condivisi saranno anche memorizzati su di un file, in modo da averli a disposizione ai successivi riavvi dell'applicazione.

    GRAZIE A TUTTI PER OGNI OPINIONE.
    Life is too short to spend it hoping or crying...JUST LIVE IT!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] Condividere dati tra classi

    Originariamente inviato da CheCk_OUTSIDE
    - creare una classe static (che non ho mai utilizzato)
    Le classi "top-level" non sono mai static, una classe può essere static solo se è dichiarata all'interno di un altra. Non credo che ti serva .....

    Originariamente inviato da CheCk_OUTSIDE
    - creare una classe con metodi static (in pratica la stessa cosa) da richiamare ogni volta
    Fattibile ma bisogna vedere cosa devi fare di preciso.

    Originariamente inviato da CheCk_OUTSIDE
    - creare una classe "normale" e passarla (sottoforma di oggetto) a tutte le classi in fase di costruzione.
    Anche questo è fattibile ma se l'oggetto deve essere "unico", allora sarebbe meglio una classe "singleton", cioè una classe di cui si può avere 1 sola istanza (e la cosa va appunto gestita secondo il pattern "singleton").
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: [JAVA] Condividere dati tra classi

    Originariamente inviato da andbin

    Fattibile ma bisogna vedere cosa devi fare di preciso.

    Anche questo è fattibile ma se l'oggetto deve essere "unico", allora sarebbe meglio una classe "singleton", cioè una classe di cui si può avere 1 sola istanza (e la cosa va appunto gestita secondo il pattern "singleton").
    Beh in realtà la soluzione da me indicata riguardante la classe con i metodi "static" è un po' la stessa politica adottata per il "singleton" pattern.
    In pratica io sto costruendo un'applicazione che esegua del video streaming via internet, e ho suddiviso parecchio i lavori in varie classi, che voglio rendere indipendenti (la classe che gestisce la webcam, quella che si occupa della suddivisione dei video, quella che si occupa della trasmissione dei video al server web, etc..). In mezzo a tutto ciò volevo mettere una classe che contenesse le impostazioni generali usate da tutti gli oggetti, in modo da mantenere una gestione comunque centralizzata delle stesse, in modo da poterle poi recuperare ed utilizzare da qualsiasi punto dell'applicazione.
    Spero di essermi spiegato nel miglior modo possibile.

    Comunque grazie per le delucidazioni!
    Life is too short to spend it hoping or crying...JUST LIVE IT!

  4. #4
    Io creerei una classe composta da soli membri statici,
    una Factory.

    I membri statici sono disponibili prima che vengano instanziate tutte le altre classi:
    quindi dovrebbero essere utilizzati per fornire dati necessari agli oggetti che ne hanno bisogno.

    Per esempio, io utilizzo questo modello per le connessioni ai database.

    Oppure puoi utilizzare la dichiarazione static all'interno di una classe:

    class Ciccio{
    static{
    ......
    ......
    }
    }

    Ciao
    mirko
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    41
    Originariamente inviato da mirkoagrati
    Io creerei una classe composta da soli membri statici,
    una Factory.

    I membri statici sono disponibili prima che vengano instanziate tutte le altre classi:
    quindi dovrebbero essere utilizzati per fornire dati necessari agli oggetti che ne hanno bisogno.

    Per esempio, io utilizzo questo modello per le connessioni ai database.

    Oppure puoi utilizzare la dichiarazione static all'interno di una classe:

    class Ciccio{
    static{
    ......
    ......
    }
    }

    Ciao
    mirko

    questo interessa anche a me... per quanto riguarda la connessione ai db. che vuol dire una classe con membri statici? una classe (non statica) con metodi tutti statici?
    funziona se faccio un jFrame in cui metto dentro una classe static in cui implemento (non statici o statici?) i metodi che caricano i driver e si connettono al db?
    un'altra domanda, mi perdonerà chi ha aperto il topic... ma se io uso un qualcosa di statico per la connessione al db, la apro una volta per tutte e lascio aperta per tutta la durata del programma oppure la apro e chiudo per sicurezza ad ogni jFrame che passo? nel primo caso, infatti, cosa succederebbe se ad esempio si blocca il programma o accade un evento imprevisto? si chiude sempre la connessione, c'è un modo per farla chiudere oppure ancora è meglio comunque non lasciarla aperta? cioè sono più le risorse che si sprecano ad aprire e chiudere ogni volta oppure a tenerla aperta?
    grazie!

  6. #6
    Originariamente inviato da mirkoagrati
    Io creerei una classe composta da soli membri statici,
    una Factory.

    I membri statici sono disponibili prima che vengano instanziate tutte le altre classi:
    quindi dovrebbero essere utilizzati per fornire dati necessari agli oggetti che ne hanno bisogno.

    Per esempio, io utilizzo questo modello per le connessioni ai database.

    Oppure puoi utilizzare la dichiarazione static all'interno di una classe:

    class Ciccio{
    static{
    ......
    ......
    }
    }

    Ciao
    mirko
    Grazie per la risposta.
    Ho solo una domanda... come lo utilizzo poi il blocco static? Nel senso.. come faccio poi riferimento agli oggetti e ai metodi in esso contenuti?
    Io avevo pensato inizialmente proprio alla tua prima soluzione. Anche la soluzione del blocco static non è affatto male, mi crea dubbi solo il suo successivo utilizzo.

    Grazie comunque per le dritte!
    Life is too short to spend it hoping or crying...JUST LIVE IT!

  7. #7
    Possono essere metodi o proprietà pubbliche statiche,
    oppure private che ricevi tramite metodi statici pubblici.

    Class pippo{
    public static nome;

    static{
    nome = Pippo;
    }
    }

    In questo modo puoi inizializzare le tue risorse statiche,
    accedendo anche a dati esterni quali datasource ecc....

    Fammi Sapere
    Mirko.

    PS: Su Java ho messo a disposizione diversi manuali sul mio sito.
    Prova a dare un'occhiata.
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  8. #8
    Grazie per le indicazione, credo che utilizzerò i metodi static, come già tu prima mi hai indicato, anche se mi stuzzica l'idea di usare il pattern Singleton suggeritomi da andbin... niente male.

    GRAZIE A TUTTI!
    Life is too short to spend it hoping or crying...JUST LIVE IT!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.