繁体   English   中英

iOS 设计模式实现

[英]iOS Design Pattern Implementation

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

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

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

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

首先,即使考虑到这一点,也对你有好处。 决策中涉及的关键概念是“责任范围”和“关注点分离”。

您可以通过考虑以下因素来确定更好的选择:

  1. 哪些事件可以触发达到里程碑?
  2. 哪个类负责该操作?
  3. 里程碑是否可以与正在解决的级别分开实现?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM