我的模拟模型包含表面上的代理。代理由 表示class Agent
,它们的位置由表示class Point
,表面本身由表示class Surface
。每个点实际上只是一对数字。
为了模拟一个代理的运动,我需要知道他在哪个表面上(例如,在圆环上,他永远不会碰到陆地的末端,但在圆柱体上,他会。)
我的问题是我是否应该将对象class Point
的引用作为实例属性添加到Surface
。
如果我这样做,class Point
会变得更加复杂,并且效率会受到影响(而不是处理成对的数字,我将处理成对的数字加上一个参考)。class Surface
这尤其令人讨厌,因为在单个程序运行中只有一个实例曾经实例化。
如果我不这样做,我将无法提供class Agent
方法move
。相反,我必须从一个知道表面代理和单个代理的外部类对代理的运动进行建模。这种方法在逻辑上似乎不太吸引人。