带类的循环引用的原因?

dtc*_*dtc 5 java circular-reference

我知道循环引用(类a包含类b,类b包含类a).但由于我编程不够,我很难找到使用它们的理由.我想知道人们是否可以给我一些很好的例子,并可能解释使用它们的充分理由.

例如,现在我正在查看2D源代码教程,并且用户创建了一个相互引用的Creature和CreatureAi类.是什么原因?我还不知道,这就是为什么我在寻找示例并仍然在阅读.

Dmi*_* S. 11

您有一个公司类,其中包含适用于该公司的个人列表.集合中的每个Individual类实例都包含对其工作的公司的引用.

通过这种方式,您可以轻松找出哪些人适合哪些公司.请注意,它可能不一定是最好的设计,特别是如果使用ORM或文档数据库将类持久化到数据库中.


das*_*ght 10

圆形引用最明显的例子是自引用:链接列表,树和许多其他递归结构需要它.

循环引用通常隐含在相关类的层次结构中,例如具有任意嵌套的UI元素或表达式树.

最后,循环引用的常见情况是双向父子关系:父对象(例如UI面板)保存对其子对象的引用,并且每个子对象(例如按钮,表等)都包含对其的引用.家长.父母需要向孩子发送动机,告诉他们孩子的启用,禁用,可见或不可见; 孩子可以通知父母需要调整大小,改变视觉状态等.

最后一个例子可能类似于你的Creature-CreatureAI对:它们是分开的,因为它们的关注点不同,但是它们彼此有引用,因为它们需要在不同的任务上合作.