一些背景:
类似的问题以前已经问过很多次了,主要是因为这通常表现为一些关于多态性的介绍式的作业式问题。通常情况下,“Dog / Cat类”的行很长,它们都是从动物派生出来的,但是实现了它们自己的that ()方法,或者类似这样的非常简单的方法。
不幸的是,对于那些实际上希望围绕基于动植物的生态系统进行一些复杂项目的人来说,这些简单的答案实际上使得很难找到围绕整个生态系统的完整的类层次结构的讨论。
在某种程度上,所有的类层次结构设计都将特定于项目的详细程度。例如,我对足够的细节不感兴趣,无法为我的植物类建立光合作用()函数,并从太阳->植物中模拟出这种基本的能量关系。但是,我希望这个类层次结构模板具有足够的包容性,如果一个项目想要这样做的话,这样的事情不会太难实现。
因此,我希望我们能够就生态系统的最优类层次结构达成共识,这将是足够普遍的,以便在未来的重构/扩展中将痛苦最小化。
生态系统模拟:
通过“生态系统”模拟,让我们以这为例。有兔子吃植物,狐狸吃兔子。每个类都有特定的行为。生殖(考虑基因)很重要。所有的生命实体都可以被“消耗”,而所有的生命实体都有一些会随着时间变化的基因。
以下是一些初步的想法:
LivingEntity (摘要)
动物: LivingEntity (摘要)
植物: LivingEntity (摘要)
灌木:植物
树:植物
兔:动物
狐狸:动物
可能想要些更可扩展的东西。还需要考虑接口。以下是一些我不知道该如何处理当前的想法:
物种?
部落?(红兔对蓝兔)
栖息地?(洞穴,洞穴)
赫点兔子能从狐狸的攻击中“活下来”吗?
只使用兔子和狐狸的具体例子,但理想的情况是,在食物链的任何层次上,都应该扩展到所有类型的生物实体。
另一个问题是,对于足够复杂的生态系统,这种类型的传统类层次结构是不能扩展的。生物学中充满了边缘案例行为,但在这些类中添加行为似乎会变得相当麻烦。这让我相信,我需要某种根本不同的设计模式。
摘要:
在我的“大项目”中,我忽略了在开始之前优化多态,这导致了许多重构和对OOP的不良体验。在我做得太深之前试着优化这个。非常感谢你的帮助!
发布于 2021-04-18 21:56:26
这可能是一个答案,但在得出这一结论之前,我需要了解一些细节:
本论文使用EventHandler模式试图缓解添加新行为时遇到的一些问题。
我不完全确定这是理想的解决方案,但看起来很有希望。我没有完整的例子,所以我仍然理解这样的东西会是什么样子的。
这种做法似乎确实有一个重大缺点:
目前森林设计的局限性在于它没有为模拟生物体之间的相互作用提供任何支持。
如果我正确理解了,兔子就不可能吃一株植物。想知道是否有人对这种类型的EventHandler模式有一些经验,以了解这个问题是否可以解决。
https://stackoverflow.com/questions/67152002
复制相似问题