2017-07-17 4 views
-2

Je travaille sur un créateur de personnage RPG de table avec Java qui doit implémenter des motifs de conception, mais je n'arrive pas à obtenir un observateur correct.Observateur pour notifier les nouvelles valeurs maximales dans ArrayList

C'est ce que fait mon programme.

  1. Au démarrage, il charge tous les caractères déjà créés à partir d'un dossier et les enregistre sur un Arraylist
  2. Un menu permet à l'utilisateur une option pour lancer les statistiques pour les nouveaux personnages et les enregistre sur le Arraylist et en tant que fichier sur les personnages dossier

Picture of my program's Class Diagram

Je veux que mon observateur d'observer le ArrayList et me avertir quand un nouveau personnage avec une nouvelle caractéristique la plus élevée est créée (force, dextérité, etc)

S'il vous plaît, si quelque chose n'est pas clair avec ma question faites le moi savoir!

Répondre

1

Vous devez stocker la liste des caractères dans une classe spécifique et faire en sorte que cette classe étende une classe Observable (classe JDK ou la vôtre si vous voulez avoir une sémantique plus spécifique). Si vous créez vos propres classes, vous pourriez avoir deux classes: NewHighestCharacterObservable et NewHighestCharacterObserver.

La classe NewHighestCharacterObservable fournit au moins ces deux méthodes pour mettre en œuvre le modèle:

  • une méthode pour ajouter un NewHighestCharacterObserver à lui.
    Par exemple addObserver(NewHighestCharacterObserver). Une méthode pour notifier NewHighestCharacterObserver s d'une modification.
    Par exemple notifyObservers(Character newCharacterWithHigherStat).
    Il est notifyObservers() et non notifyObserver() pour le rendre facile à changer si plus tard, plusieurs observateurs ont besoin d'observer cet observable.

Ensuite, pour être informé, faites votre interface observable en implémentant l'interface NewHighestCharacterObserver qui fournit une méthode pour être mis à jour:

  • onNewHighestCharacter (Personnage c)

C'est la méthode invoquée par notifyObservers().

+0

Merci! Je vais essayer de mettre en œuvre cela! – langStrife