我在设计模式上苦苦挣扎,希望在将我当前的应用程序从 Objective-C 重写为 Swift 时遵循最佳实践。
我有一个游戏,玩家可以通过解决一定数量的关卡获得额外分数/或特殊奖品。需要达到几个里程碑(例如完成 10 个级别/完成 50 个级别)。我有不同的游戏模式,所以我有几个 Gameplay 类的子类。在每个玩家轮到之后,调用 -checkSolution
来检查玩家是否解决了关卡。如果成功,我会增加玩家的游戏分数并将他送到一个新的水平。在这里,我还调用了 ScoreManager 类的 -checkForMilestone
来检查是否已达到任何里程碑。
我不确定是否可以在 -checkSolution
中调用 -checkForMilestone
。或者最好使用 block 创建回调或使用 KVO 观察(来自 ScoreManager 类)玩家的分数是否发生变化,然后做出适当的 react 。
我会保持简单。您可以使用 KVO、事件或其他方法,但从您的描述中我看不到任何好处,但会增加代码的复杂性并使事情更难调试。如果您已经调用了 checkSolution() 并且您知道这是唯一会触发里程碑更改的地方,那么您应该将这两个方法紧密结合在一起。另一方面,如果里程碑可以与成功的解决方案脱钩,例如玩家通过小额支付购买它们或添加玩家里程碑的 friend 贡献,那么您可以在分数上创建一个可观察的模式或任何触发更新的东西。
关于iOS 设计模式实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31092966/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |