我对Objective C编码比较陌生,所以请帮助我:
在我的代码中,我有一个名为 GameData 的类,它是一个单例,它包含一些方法,并且正是这个类来管理评分系统。我的问题是,我应该为存储在 GameData 中的分数创建另一个类,还是应该保持这种方式?我想确定一下,因为我有很多分数管理方法!谢谢!!
我对Objective C编码比较陌生,所以请帮助我:
在我的代码中,我有一个名为 GameData 的类,它是一个单例,它包含一些方法,并且正是这个类来管理评分系统。我的问题是,我应该为存储在 GameData 中的分数创建另一个类,还是应该保持这种方式?我想确定一下,因为我有很多分数管理方法!谢谢!!
职责分离 (pdf)是一个很好的软件设计原则。根据您的需求以及您在代码中预见的更改向量,将代码移动到专用的记分类应该会有所帮助。
此外,请务必检查其他重要的面向对象设计原则,例如SOLID 原则。
一般来说,如果您发现您在对象 A 中创建了很多方法来处理 A 中包含的特定值或特定值集,则应将这些值或值组合到具有所有 B 值关联方法的类 B 中。
当您自己注意到这个问题时,您可能应该将与Score
数据关联的值和方法移动到一个单独的对象中。
对于你移动的方法,问问自己这个方法是一个Score
应该知道的东西,还是GameData
经理应该知道的东西。
例如,aScore
可能不应该知道其他分数的存在,因为它有GameData
责任管理这些分数的组成。相反,GameData
经理不应根据某些内部Score
指标(例如pointsGained
或secondsToFinish
)手动对分数进行排序,而应依赖于Score
实现与其他有意义的对象的比较方法Score
。在这个例子中,通过只给对象提供对他们重要的信息,你可以很容易地改变一个Score
排名到其他分数的方式,而无需修改GameData
类。