《记忆碎片》中的多个发起者

问题描述 投票:0回答:1

我已获得游戏代码。我的任务现在有按钮来保存该游戏的状态并将其恢复为已保存的状态。代码中有一个游戏窗口和一个游戏引擎(主循环和逻辑)。

我想在这里应用纪念品模式。最初,我认为我可以让游戏引擎成为发起者,因为这里存储了对需要重置的类的引用(例如玩家):在这个类中是我的保存备忘录,我在其中复制变量并将其设置在备忘录中+恢复备忘录,我重置了备忘录中的变量。

但是,在游戏窗口中现在似乎还存储了一些我需要在备忘录中保存和重置的变量。因此,我现在想知道是否可以有多个发起者:所以两个类都保存到备忘录并都恢复?我仍然会有一堂纪念课和一名看护人。

现在,我想知道纪念品模式中是否可以有多个发起者,这是否是一个好的设计?或者我还能做什么其他选择?

design-patterns state undo undo-redo memento
1个回答
0
投票

是的。为了实现这一目标,我所做的是将备忘录实现放入服务中。您可以将该服务注入到您想要使用的任何地方。实现位于 GitHub 上。

https://github.com/peterdongan/UndoService

该项目包括一个聚合撤消服务,它允许您单独跟踪状态的不同部分,但仍然使用统一的撤消重做功能。然而,这对于您的目的来说是不必要的,因为您只是从不同的地方跟踪一件事。您所需要做的就是将其注入到您使用它的任何地方。

© www.soinside.com 2019 - 2024. All rights reserved.