Objective C - 构造类逻辑

时间:2012-12-22 00:00:36

标签: objective-c architecture singleton logic structure

我对Objective C编码比较新,所以请帮助我:

在我的代码中,我有一个名为GameData的类,它是一个单例,它包含一些方法,而这个类是管理评分系统的。我的问题是,我应该为我将存储在GameData中的Scores创建另一个类,还是应该保持这种方式?我想确定,因为我有很多分数管理方法!谢谢!

2 个答案:

答案 0 :(得分:1)

Separating responsibilities (pdf)是一个很好的软件设计原则。根据您的需要以及您在代码中预见的更改向量,将代码移动到专用的分数保留类应该会有所帮助。

另外,请务必检查其他重要的面向对象设计原则,例如SOLID principles

答案 1 :(得分:1)

通常,如果您发现在对象A中创建了大量方法来处理A中包含的特定值或特定值集,则应将值或值组合到具有所有B值的B类中相关方法。

看到您自己注意到这个问题,您应该将与Score数据相关联的值和方法移动到单独的对象中。

对于您移动的方法,请问自己该方法是Score应该了解的内容,还是GameData经理应该了解的内容。

例如,Score可能不应该知道其他分数的存在,因为GameData负责管理这些分数的组成。相反,GameData经理不应根据某些内部Score指标(例如pointsGainedsecondsToFinish)手动对您的得分进行排序,而是依赖{{1}实现对Score有意义的其他对象的比较方法。通过在此示例中仅为对象提供对其重要的信息,您可以轻松更改Score排名到其他分数的方式,而无需修改Score类。