菜鸟教程小白 发表于 2022-12-12 15:40:20

iOS 设计模式实现


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

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

<p>我不确定是否可以在 <code>-checkSolution</code> 中调用 <code>-checkForMilestone</code>。或者最好使用 block 创建回调或使用 KVO 观察(来自 ScoreManager 类)玩家的分数是否发生变化,然后做出适当的 react 。 </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我会保持简单。您可以使用 KVO、事件或其他方法,但从您的描述中我看不到任何好处,但会增加代码的复杂性并使事情更难调试。如果您已经调用了 checkSolution() 并且您知道这是唯一会触发里程碑更改的地方,那么您应该将这两个方法紧密结合在一起。另一方面,如果里程碑可以与成功的解决方案脱钩,例如玩家通过小额支付购买它们或添加玩家里程碑的 friend 贡献,那么您可以在分数上创建一个可观察的模式或任何触发更新的东西。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iOS 设计模式实现,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/31092966/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/31092966/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iOS 设计模式实现