• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iOS 设计模式实现

[复制链接]
菜鸟教程小白 发表于 2022-12-12 15:40:20 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在设计模式上苦苦挣扎,希望在将我当前的应用程序从 Objective-C 重写为 Swift 时遵循最佳实践。

我有一个游戏,玩家可以通过解决一定数量的关卡获得额外分数/或特殊奖品。需要达到几个里程碑(例如完成 10 个级别/完成 50 个级别)。我有不同的游戏模式,所以我有几个 Gameplay 类的子类。在每个玩家轮到之后,调用 -checkSolution 来检查玩家是否解决了关卡。如果成功,我会增加玩家的游戏分数并将他送到一个新的水平。在这里,我还调用了 ScoreManager 类的 -checkForMilestone 来检查是否已达到任何里程碑。

我不确定是否可以在 -checkSolution 中调用 -checkForMilestone。或者最好使用 block 创建回调或使用 KVO 观察(来自 ScoreManager 类)玩家的分数是否发生变化,然后做出适当的 react 。



Best Answer-推荐答案


我会保持简单。您可以使用 KVO、事件或其他方法,但从您的描述中我看不到任何好处,但会增加代码的复杂性并使事情更难调试。如果您已经调用了 checkSolution() 并且您知道这是唯一会触发里程碑更改的地方,那么您应该将这两个方法紧密结合在一起。另一方面,如果里程碑可以与成功的解决方案脱钩,例如玩家通过小额支付购买它们或添加玩家里程碑的 friend 贡献,那么您可以在分数上创建一个可观察的模式或任何触发更新的东西。

关于iOS 设计模式实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31092966/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap