Observer在ArrayList中通知新的最大值

时间:2017-07-17 19:41:12

标签: java arraylist observer-pattern

我正在使用Java制作桌面RPG角色创建器,但是我无法实现设计模式,但我似乎无法正确使用Observer。

这就是我的程序。

  1. 启动时,它会加载已从文件夹创建的所有字符并将其保存在Arraylist
  2. 菜单为用户提供了滚动新字符统计信息的选项,并将其保存在Arraylist上,并保存为字符文件夹中的文件
  3. Picture of my program's Class Diagram

    我希望我的观察者观察ArrayList并在创建具有新的最高统计数据的新角色时通知我(力量,灵巧等)

    如果我的问题不明确,请告诉我!

1 个答案:

答案 0 :(得分:1)

您应该将字符列表存储在特定的类中,并使此类扩展Observable类(JDK类或您自己的类,如果您想要更具体的语义)。
如果您创建自己的类,则可以有两个类: NewHighestCharacterObservableNewHighestCharacterObserver

NewHighestCharacterObservable类至少提供了这两种方法来实现模式:

  • 向其添加NewHighestCharacterObserver的方法 例如addObserver(NewHighestCharacterObserver)
  • 通知NewHighestCharacterObserver更改的方法 例如notifyObservers(Character newCharacterWithHigherStat)
    如果以后多个观察者需要观察此观察值,则notifyObservers()而非notifyObserver()可以轻松更改。

然后,要获得通知,通过实现提供要更新的方法的NewHighestCharacterObserver接口,使您的GUI成为可观察的:

  • onNewHighestCharacter(Character c)

这是notifyObservers()调用的方法。