2016-05-23 1 views
0

J'ai plusieurs classes dans mon projet Java.Conserver plusieurs classes 'open' sans (String args [])

On est pour garder une trace du nombre de livres qui ont été ajoutés à une bibliothèque virtuelle. Chaque fois que le programme fonctionne avec une classe différente, la prochaine fois que la classe réservée au livre est appelée, ses valeurs sont restaurées par défaut.

je me sens comme instancier chaque classe à main(String args[]) avec static Example example = new Example(); travaillerait, puis en fournissant des arguments pour toutes les classes à travers les méthodes.

Existe-t-il un moyen plus simple de le faire.

+1

Je suppose que vous devrez ajouter du code. Comme est la question est complètement clair pour moi. – Fildor

+0

@Fildor Je ne veux pas que les variables soient réinitialisées à chaque fois que la classe est rappelée. Donc, si le script cesse d'interagir avec la classe en gardant une trace des livres, je veux qu'il garde sa position et se souvienne du nombre de livres la prochaine fois que le script interagira avec lui, pas remis à 0. –

+0

Habituellement, vous utiliserez une sorte d'outil de persistance pour cela. Comme Gildraths répond, vous pouvez utiliser un Singleton pour garder le BookKeeper en mémoire pendant toute la durée de l'exécution. Si vous voulez que les données soient persistantes même après avoir quitté et redémarré le programme, vous avez besoin d'une persistance supplémentaire comme écrire dans le fichier. Vous pouvez également utiliser une base de données. – Fildor

Répondre

0

Vous devriez regarder dans le motif singleton. Il s'assure que vous avez seulement une instance d'un objet.

public class BookKeeper{ 
private static BookKeeper instance; 

private BookKeeper{ 
} 

public synchronized static BookKeeper getInstance(){ 
if(instance == null){ 
instance = new BookKeeper(); 
} 
return instance; 
} 

Ensuite, au lieu du nouveau BookKeeper, vous appelez BookKeeper.getInstance(). Cela garantira que vous avez toujours le même objet (avec les données qu'il contient)

+1

Remarquez que cet exemple de singleton paresseux n'est pas ** thread-safe! Et aussi, il manque un 'static' à' l'instance'. – Fildor

+0

@Fildor J'ai également oublié l'instance de retour;) Merci d'avoir vérifié! – Gildraths

+0

Donc, si j'avais une méthode dans bookKeeper, comment l'appellerais-je? BookKeeper.getInstance(). Method(); ? –