圣诞大减价开始了!

将双向关联更改为单向关联

问题

类之间存在双向关联,但其中一个类不使用另一个类的特性。

解决方案

删除未使用的关联。

之前
将“双向关联”更改为“单向关联”
将“双向关联”更改为“单向-之后”

为什么重构

双向关联通常比单向关联更难维护,需要额外的代码来正确地创建和删除相关对象。这使得程序更加复杂。

此外,不正确实现的双向关联可能会导致垃圾收集问题(进而导致未使用对象的内存膨胀)。

例如:垃圾收集器从内存中删除不再被其他对象引用的对象。假设这是一个对象对用户-订单被创造,使用,然后被抛弃。但是这些对象不会从内存中被清除,因为它们仍然相互引用。也就是说,由于编程语言的进步,这个问题变得不那么重要了,这些语言现在自动识别未使用的对象引用并从内存中删除它们。

还有类之间相互依赖的问题。在双向关联中,两个类必须彼此知道,这意味着它们不能单独使用。如果存在许多这样的关联,程序的不同部分就会变得过于依赖彼此,一个组件中的任何更改都可能影响其他组件。

好处

  • 简化不需要关系的类。更少的代码等于更少的代码维护。

  • 减少类之间的依赖关系。独立类更容易维护,因为对类的任何更改只影响该类。

如何重构

  1. 确保你的类中有一个是正确的:

    • 没有使用关联。

    • 还有另一种获取关联对象的方法,比如通过数据库查询。

    • 关联对象可以作为参数传递给使用它的方法。

  2. 根据您的情况,对于包含与另一个对象关联的字段的使用应该替换为参数或方法调用,以便以不同的方式获取对象。

  3. 删除将关联对象分配给字段的代码。

  4. 删除现在不使用的字段。

Baidu
map