编码实际上并不难。困难的部分是编写有意义,可读和可理解的代码。因此,我想找一个更好的开发人员并创建一些可靠的体系结构。
因此,我想为电子游戏中的NPC创建一个体系结构。这是一个实时战略游戏,例如《星际争霸》,《帝国时代》,《命令与征服》等。因此,我将拥有不同种类的NPC。一个NPC可以有一对多的能力,这些(方法): Build()
,Farm()
和Attack()
。
例子:
工人可以Build()
和Farm()
战士可以Attack()
公民可以Build()
,Farm()
和Attack()
渔民可以Farm()
和Attack()
我希望到目前为止一切都清楚。
所以现在我有了我的NPC类型及其能力。但是让我们来谈谈技术/程序方面。
对于我不同种类的NPC,什么样的程序设计架构会很好?
好吧,我可以有一个基础课。实际上,我认为这是坚持DRY原则的好方法。因此,我可以WalkTo(x,y)
在基类中使用类似的方法,因为每个NPC都可以移动。但是现在让我们来解决真正的问题。我在哪里实现我的能力?(记住:Build()
,Farm()
和Attack()
)
由于这些能力将由相同的逻辑组成,因此为每个NPC(工人,战士,..)实施它们将是令人讨厌的/打破DRY原则。
好吧,我可以在基类中实现这些功能。这将需要某种逻辑来验证NPC是否可以使用X IsBuilder
,... CanBuild
,…… 能力。我想我想表达的很清楚。
但是我对这个想法不太满意。这听起来像一个功能过多的。肿基类。
我确实使用C#作为编程语言。因此,这里不能选择多重继承。意思是:拥有额外的基础类是Fisherman : Farmer, Attacker
行不通的。