如何动态地向类添加方法


How to dynamically add methods to a class

我是面向对象编程的新手,我很难想象OOP。

我想做的是一个RPG游戏。

我有Hero类(用户)它有这样的属性:name, hair_style, power。还有这些方法:speak, attack, defend

我想动态地添加更多的方法(法术),随着英雄学习更多的法术。

我不知道做这件事最好的方法是什么。我能想到如下:

创建一个类'spell',每个魔法咒语都从它继承一个类,并为Hero添加一个类型为'spell'的属性(必须是数组)。当英雄尝试使用某些法术时,就必须尝试整个阵列,看看是否有这样的魔法(方法)。(可能是错误的)


你是怎么做到的?泰

你可以创建一个名为"能力"的基类,并从它派生出法术和其他英雄技能。然后在你的英雄类中,创建一个类型为Ability的链表,并将其命名为"currentAbilities"或类似的东西。

每次你的英雄学习一项新技能时,将其添加到列表中。每个能力都可以共享常用的方法,如Cast()、Upgrade()等。然后,当需要列出和使用可用的法术和攻击时,只需阅读链接列表并调用它们的方法。

你可以继续,把所有的拼写方法在类中,然后每当一个被调用检查,以确保他们可以使用它。如果你使用包含允许的法术的类属性数组,你也可以事先检查。

听起来你想使用Builder模式

  • http://en.wikipedia.org/wiki/Builder_pattern
  • http://www.oodesign.com/builder-pattern.html

如果你真的希望它是动态的,你可以使用魔法方法__call()(更多信息在这里),它将允许你调用不存在的函数或超出作用域。

你仍然需要在某个地方定义函数;这只允许您控制函数的作用域。严格来说,你不能动态地"创建"它们。