这是我用于模拟模型的类“层次结构”的一部分(我的代码在 Python 中,但我认为我的问题与语言无关):
class World:
# highest-level class, which "knows" everything about the model
# most likely will have just one instance
# contains (e.g., in a dictionary) references to all the instances of class Agent
class Agent:
# each instance represents an agent
# an agent can, among other things, move around according to certain rules
# movement depends on the internal state of the agent,
# but also on the terrain and other information not stored in the Agent instance
问题:我应该把move
实例方法放在哪里?
我认为我应该将依赖限制class Agent
在层次结构中低于自身的类(即,其实例包含在Agent
实例中的类)。但这意味着move
方法不能存在,class Agent
因为它创建了对描述地形等的类(至少是接口)的依赖 - 所以我不妨添加对Agent
(因此依赖于)的引用World
。从软件设计的角度来看,这可以吗?
另一种方法是将方法move
放入class World
,它不会导致任何额外的依赖关系。但是,class World
然后将完成几乎所有的工作,在我看来,这将违背 OOP 的主要思想(我的理解是不要将所有功能集中到一个地方,而是将其包含在相关类中) .
性能方面的考虑只是次要问题(而且我认为这两种方法之间的性能不会有所不同)。
编辑:我误用了上面的“类层次结构”一词。我指的不是继承层次结构,而是一堆实例相互包含的类。