C# 我可以让一个类方法在不同的实例中表现不同吗?
我编辑了我的问题,下面有更多细节 这个想法可能完全不存在,但我的例子如下: 我想创建一个Person类,并有一个Act()方法(很可能来自接口)。每个人都需要能够行动,但每个人的行动都会有所不同。例如,鲍勃会做饭,山姆会讲笑话,凯文会追狗 有没有办法实现这种类型的东西,或者我需要创建一个Person类,然后派生Bob、Sam和Kevin,并相应地实现Act方法 编辑: 为了澄清,由于这被标记为过于宽泛,以下是我的具体目标 我正在构建一个基于文本的小游戏(我正在学习这门语言,我总是发现游戏可以提供帮助,因为它们需要广泛的功能)。我需要有不同的敌人,每一种都需要行动,但很明显,他们的行动并不都一样。他们需要检查特殊情况,并根据这些情况执行不同的操作 我真的想知道我是否会将每一种敌人分类,或者是否有一种更实际的方法来解决这个问题 正如下面所建议的,策略模式似乎是一个可行的解决方案,尽管最终,我仍然会创建一个动作类,然后将其细分并传递给敌人类C# 我可以让一个类方法在不同的实例中表现不同吗?,c#,C#,我编辑了我的问题,下面有更多细节 这个想法可能完全不存在,但我的例子如下: 我想创建一个Person类,并有一个Act()方法(很可能来自接口)。每个人都需要能够行动,但每个人的行动都会有所不同。例如,鲍勃会做饭,山姆会讲笑话,凯文会追狗 有没有办法实现这种类型的东西,或者我需要创建一个Person类,然后派生Bob、Sam和Kevin,并相应地实现Act方法 编辑: 为了澄清,由于这被标记为过于宽泛,以下是我的具体目标 我正在构建一个基于文本的小游戏(我正在学习这门语言,我总是发现游戏可以提供
希望这能更清楚我的意图。谢谢大家迄今为止的回答。它已经给了我一些新的东西可以看,这已经很有帮助了。如果你不想子类化一些东西,你可以做的是实现Person,这样它就把一个动作作为依赖项,然后在Act()方法中执行那个动作
策略模式?你不会子类化
Action
,你只需要实现IAction
或其他什么。另外,创建不同的类继承自敌方,然后覆盖.Act()
函数也没有错。Wayne,谢谢你的反馈。我不认为这是错误的,但我不知道这是否是最正确的,如果这是有意义的。是的,这是一个基本的实现。。。使用界面更“干净”,但也应该是一样的。@ZoharPeled是的,我明白你的意思。我只是不知道这是一种战略模式……我要告诉你一个小秘密——在我看到艾米的评论之前,我甚至不知道有这样一种战略模式。一个快速的谷歌让我找到了我链接到的维基页面:-)是的,事实证明这一天并没有白白浪费:-)
public class Person {
private Action _actAction;
public Person(Action actAction) {
_actAction = actAction;
}
public void Act() {
_actAction.Invoke();
}
}