gpt4 book ai didi

c# - 我可以让一个类方法在不同的实例中表现不同吗?

转载 作者:行者123 更新时间:2023-11-30 15:59:03 24 4
gpt4 key购买 nike

我已经在下面使用更多详细信息编辑了我的问题。

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

我想创建一个 Person 类,并有一个 Act() 方法(很可能来自接口(interface))。每个人都需要能够行动,但每个人都会采取不同的行动。例如,Bob 会做饭,Sam 会讲笑话,Kevin 会追狗。

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

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

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

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

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

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

最佳答案

如果您不想子类化您可以做的事情是实现 Person 以便它将 Action 作为依赖项,然后在 Act() 方法中执行该操作。

public class Person {

private Action _actAction;

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

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

}

关于c# - 我可以让一个类方法在不同的实例中表现不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42285554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com