我正在努力设计模式,并希望在将当前应用程序从Objective-C重写为Swift时遵循最佳实践。
我有一个游戏,玩家获得额外的分数/或特殊奖品,比方说,解决一定数量的水平。有几个里程碑要达到(例如完成10个级别/完成50个级别)。我有不同的游戏模式,所以我有一些Gameplay类的子类。在每个玩家的回合-checkSolution
被调用以检查玩家是否解决了等级。如果成功,我会增加玩家的游戏分数并将他发送到一个新的水平。在这里,我还调用ScoreManager类的-checkForMilestone
来检查是否已达到任何里程碑。
我不确定是否可以在-checkForMilestone
内拨打-checkSolution
。或者最好使用块创建回调或使用KVO观察(来自ScoreManager类)玩家的分数是否已更改然后做出适当反应。
答案 0 :(得分:1)
我会保持简单。您可以使用KVO,事件或其他方法,但从您的描述中我看不到任何好处,但增加了代码的复杂性并使事情更难调试。如果您已经调用checkSolution()并且您知道这是唯一会触发里程碑更改的地方,那么您应该将这两种方法紧密结合在一起。另一方面,如果里程碑可以与成功的解决方案分离,例如玩家通过微支付或朋友贡献购买它们来增加玩家的里程碑,那么你可以在分数上创建一个可观察的模式或任何触发更新的触发器。< / p>
答案 1 :(得分:1)
首先,即使考虑到这一点,也要好。决策中涉及的关键概念是责任范围&#34;和&#34;关注点分离&#34;。
您可以考虑以下方式确定更好的选择: