我可以使类方法在不同的实例中表现不同吗?

时间:2017-02-16 22:03:46

标签: c#

我已在下面详细介绍了我的问题。

这个想法可能完全存在,但我的例子如下:

我想创建一个Person类,并且有一个方法Act()(很可能来自一个接口)。每个人都需要能够行动,但每个人的行为都不同。例如,鲍勃会做饭,萨姆会讲一个笑话,凯文会追逐狗。

有没有办法实现这种类型的东西,或者我是否需要创建一个Person类,然后派生Bob,Sam和Kevin,并相应地实现Act方法。

修改 澄清一下,由于这被标记为过于宽泛,这是我的具体目标。

我正在构建一个基于文本的小游戏(我正在学习语言,我总是觉得游戏可以提供帮助,因为它们需要广泛的功能)。我需要有不同的敌人,每个种类需要行动,但显然他们都不会做同样的事情。他们需要检查特殊情况,并根据这些条件执行不同的操作。

我真的只是想知道我是否会对各种敌人进行分类,或者是否有更实际的方法来解决这个问题。

如下所示,策略模式似乎是一个可行的解决方案,但最终,我仍然会创建一个Action类,然后对其进行子类化并将其传递给敌人类。

希望这能更清楚地说明我的意图。谢谢大家到目前为止的答案。它已经给了我一些新的东西,这已经有所帮助。

1 个答案:

答案 0 :(得分:3)

如果你不想要继承你可以做的事情是实现Person,那么它将Action作为依赖,然后在Act()方法中执行该动作。

public class Person {

   private Action _actAction;

   public Person(Action actAction) {
        _actAction = actAction;
   }

   public void Act() {
       _actAction.Invoke();
   }

}