Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361

    Design per una classe con molti accessi in lettura

    Ciao a tutti, mi stavo chiedendo quale fosse il migliore design per una classe che deve rendere visibili i propri campi a molte altre classi.

    La classe in questione modella le preferenze specificate dall'utilizzatore di un'applicazione swing, quindi all'avvio dell'applicazione creo un'istanza di questa classe, che legge da file le preferenze e le memorizza tra le proprie variabili.

    Per il momento a tutte le classi che devono leggere una o più preferenze viene passato il reference di quell'istanza creata all'inizio, per evitare di creare una nuova istanza e rileggere inutilmente il file.

    Questo però comporta una catena di passaggi di quel reference, anche a classi intermedie che non se ne fanno nulla, e mi chiedevo se non fosse meglio in questo caso utilizzare campi statici per modellare le preferenze, e accedervi di volta in volta con Preferences.getXXX().

    Ci sono indicazioni generali per una situazione del genere?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Ansharja Visualizza il messaggio
    Per il momento a tutte le classi che devono leggere una o più preferenze viene passato il reference di quell'istanza creata all'inizio, per evitare di creare una nuova istanza e rileggere inutilmente il file.

    Questo però comporta una catena di passaggi di quel reference, anche a classi intermedie che non se ne fanno nulla
    Lo dico solo per completezza: in scenari del genere, potrebbe essere utile sfruttare un framework apposito per la DI (Dependency Injection). Ma credo e capisco che magari nel tuo caso è sicuramente out of scope.

    Quote Originariamente inviata da Ansharja Visualizza il messaggio
    e mi chiedevo se non fosse meglio in questo caso utilizzare campi statici per modellare le preferenze, e accedervi di volta in volta con Preferences.getXXX().
    Metodi statici così per le singole preferenze, no non sarebbe molto buono. Ma la classe delle preferenze potrebbe essere un "singleton" di cui puoi tirare fuori la (unica) istanza con un getInstance() statico.

    Preferences.getInstance().getDatoXyz()

    Questo sì. Poi come implementare il singleton ... dipende. Il pattern Singleton ha svariate varianti, dipende se deve essere creato subito quando viene caricata la classe oppure in modo "lazy" al primo uso e se è necessario considerare la concorrenza sul multi-threading oppure no.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Grazie mille, disponibile come sempre

    Guardo un po' in giro cosa trovo sul Singleton, di cui per ora avevo solo leggiucchiato in altre discussioni ...

  4. #4
    Prova a usare Spring e iniettare la classe che ti serve all'interno delle classi in questione gestendola come Singleton

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Giangi85 Visualizza il messaggio
    Prova a usare Spring e iniettare la classe che ti serve all'interno delle classi in questione gestendola come Singleton
    Come ho detto prima, usare un framework per la DI molto probabilmente è un po' fuori mano per Ansharja, non certo per sminuire le conoscenze ma più che altro perché l'approccio alla DI va visto e pensato fin dall'inizio di una applicazione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.