重构——25将双向关联改为单向关联(Change Bidirectional Association to Unidirectional)

简介: 将双向关联改为单向关联(Change Bidirectional Association to Unidirectional):两个类之间有双向关联,但其中一个类如今不再需要另一个类的特性;去掉不必要的关联

将双向关联改为单向关联(Change Bidirectional Association to Unidirectional)

两个类之间有双向关联,但其中一个类如今不再需要另一个类的特性;去掉不必要的关联

一、动机

1、维护双向连接,确保对象被正确创建和删除会增加复杂度

2、大量的双向连接很容易造成僵尸对象

3、双向关联增加了类或包之间的耦合

二、做法

1、找出保存“你想去除的指针”的字段,检查它的每一个用户,判断是否可以去除该指针

2、如果客户使用了取值函数,先运用Self Encapsulate Field将待删除字段自我封装起来,然后使用Substitute Algorithm对付取值函数,令它不再使用该字段,然后编译,测试

3、如果客户未使用取值函数,那就直接修改待删除字段的所有引用点:改以其它途径获得该字段所保存的对象,每次修改后,编译并测试

4、如果已经没有任何函数使用待删除字段,移除所有对该字段的更新逻辑,然后移除该字段

目录
相关文章
|
7月前
|
机器学习/深度学习 SQL Java
JPA - 双向多对多映射
JPA - 双向多对多映射
64 2
|
7月前
|
SQL Java
JPA - 双向多对一映射
JPA - 双向多对一映射
71 2
|
7月前
|
SQL Java 数据库
JPA - 单向一对多映射
JPA - 单向一对多映射
75 2
|
7月前
|
Java uml
JPA - 单向多对一映射
JPA - 单向多对一映射
62 0
|
数据库
一对多关系domain Model中设置使用AutoMapper时出错
一对多关系domain Model中设置使用AutoMapper时出错
177 0
一对多关系domain Model中设置使用AutoMapper时出错
|
缓存 Java 数据库连接
Hibernate一对多关联的两个关键属性cascade和inverse(十一)
Hibernate一对多关联的两个关键属性cascade和inverse(十一)
128 0
Hibernate一对多关联的两个关键属性cascade和inverse(十一)
|
存储 Java 数据库连接
Hibernate的一对多映射的单向关联和双向关联(九)
Hibernate的一对多映射的单向关联和双向关联(九)
137 0
Hibernate的一对多映射的单向关联和双向关联(九)
重构——24将单项关联改为双向关联(Change Unidirectional Association to Bidirectional)
将单项关联改为双向关联(Change Unidirectional Association to Bidirectional):两个类都需要对方特性,但其间只有一条单向连接;添加一个反向连接,并使修改函数能够同时更新两条连接
1423 0
重构——20将值对象改为引用对象(Change Value to Reference)
将值对象改为引用对象(Change Value to Reference):你从一个类衍生出许多彼此相等的实例,希望将它们替换为同一对象;将这个值对象变成引用对象
1378 0
重构——21将引用对象改为值对象(Change Reference to Value)
将引用对象改为值对象(Change Reference to Value):你有一个引用对象,很小且不可改变,而且不容易管理;将它变为一个值对象
1426 0

热门文章

最新文章