我已在下面详细介绍了我的问题。
这个想法可能完全存在,但我的例子如下:
我想创建一个Person类,并且有一个方法Act()(很可能来自一个接口)。每个人都需要能够行动,但每个人的行为都不同。例如,鲍勃会做饭,萨姆会讲一个笑话,凯文会追逐狗。
有没有办法实现这种类型的东西,或者我是否需要创建一个Person类,然后派生Bob,Sam和Kevin,并相应地实现Act方法。
修改 澄清一下,由于这被标记为过于宽泛,这是我的具体目标。
我正在构建一个基于文本的小游戏(我正在学习语言,我总是觉得游戏可以提供帮助,因为它们需要广泛的功能)。我需要有不同的敌人,每个种类需要行动,但显然他们都不会做同样的事情。他们需要检查特殊情况,并根据这些条件执行不同的操作。
我真的只是想知道我是否会对各种敌人进行分类,或者是否有更实际的方法来解决这个问题。
如下所示,策略模式似乎是一个可行的解决方案,但最终,我仍然会创建一个Action类,然后对其进行子类化并将其传递给敌人类。
希望这能更清楚地说明我的意图。谢谢大家到目前为止的答案。它已经给了我一些新的东西,这已经有所帮助。
答案 0 :(得分:3)
如果你不想要继承你可以做的事情是实现Person,那么它将Action作为依赖,然后在Act()方法中执行该动作。
public class Person {
private Action _actAction;
public Person(Action actAction) {
_actAction = actAction;
}
public void Act() {
_actAction.Invoke();
}
}