最常见的实现预定义类的方法。

时间:2012-08-10 17:53:56

标签: objective-c ios

我正在开发一款拥有大量怪物的iPhone游戏。每个怪物都有一个名字,最多4种不同的攻击,以及一些代表其状态的精灵。我有一个怪物类设置,它工作得很好。我已经设法让两个怪物战斗,所有的爵士乐和它的工作。我的游戏虽然会有一组预定义的怪物,它们都有不同的统计数据,但我很难想出最好的方法来实现这一点。到目前为止,我有两个想法。

思路:

  • 创建一个类,其唯一目的是使用Monster类定义游戏中可用的所有怪物。
  • 为我需要的每一个怪物子类化怪物类。即使他们都没有真正为怪物类添加任何东西。

第二种方法的好处是可以更容易地在两个不同的怪物(如进化树)之间建立联系。

你们认为最好的方法是什么?我倾向于第二种方法。是我缺少的另一种方法吗?

2 个答案:

答案 0 :(得分:2)

此类问题的常见模式是创建factory class,这与您的第一个想法非常接近。你创建了一个名为MonsterFactory的单一类,它的工作就是制作Monster类的实例以供其他地方使用。如果你正确地构建工厂,它甚至可以很好地处理进化树类。

工厂的另一个好处是它抽象出存储有关怪物的信息的细节。例如,您可以将前五个或十个怪物的信息硬编码到程序中进行测试,但稍后重新实现工厂以在磁盘上使用数据库或文件以获得更大量的怪物。只要您的工厂API保持不变,您的Monster类就不必关心这些细节;这一切都在工厂里。

答案 1 :(得分:-1)

  

即使他们都没有真正为怪物类添加任何东西。

     

第二种方法的好处是可以更容易地在两个不同的怪物(如进化树)之间建立联系

回答了你自己的问题。