重构手法25:Change Bidirectional Association to Unidirectional (将双向关联改为单向关联)
2010-08-05 14:36
447 查看
2个类之间有双向关联,但其中一个类如今不再需要另一个类的特性。去除不必要的关联。
动机:双向关联很有用,但你必须为它付出代价,那就是维护双向连接、确保对象被正确创建和删除而增加的复杂度。而且,由于很多程序员并不习惯使用双向关联,它往往成为错误之源。
大量的双向连接也很容易造成“僵尸对象”:某个对象本来应该死亡了,却仍然保留在系统中,因为对它的引用没有完全清除。
此外,双向关联也迫使2个类之间有了依赖:对其中任一个类的任何修改,都可能引发另一个类的变化。如果这2个类位于不同的程序集,这种依赖就是程序集之间的相依。过多的跨程序集依赖会造就紧耦合的系统,使得任何一点小小改动就可能造成许多无法预知的后果。
只有在真正需要双向关联的时候,才该使用它。如果发现双向关联不再有存在价值,就应该去掉不必要的一条关联。
动机:双向关联很有用,但你必须为它付出代价,那就是维护双向连接、确保对象被正确创建和删除而增加的复杂度。而且,由于很多程序员并不习惯使用双向关联,它往往成为错误之源。
大量的双向连接也很容易造成“僵尸对象”:某个对象本来应该死亡了,却仍然保留在系统中,因为对它的引用没有完全清除。
此外,双向关联也迫使2个类之间有了依赖:对其中任一个类的任何修改,都可能引发另一个类的变化。如果这2个类位于不同的程序集,这种依赖就是程序集之间的相依。过多的跨程序集依赖会造就紧耦合的系统,使得任何一点小小改动就可能造成许多无法预知的后果。
只有在真正需要双向关联的时候,才该使用它。如果发现双向关联不再有存在价值,就应该去掉不必要的一条关联。
相关文章推荐
- 重构手法24:Change Unidirectional Association to Bidirectional (将单向关联改为双向关联)
- Change Bidirectional Association to Unidirectional(将双向关联改为单向)
- 重新组织数据之七 :Change Unidirectional Association to Bidirectional(将单向关联改为双向)
- 8.8 change bidirectional association to unidirectional (将双向关联改为单向关联)
- Change Unidirectional Association to Bidirectional(将单向关联改为双向)
- ChangeUnidirectionalAssociationToBidirectional(将单向关联改为双向关联)
- 重构的小故事 Change Bidirectional Association to Unidirectional or Vice Verse
- Change Bidirectional Association to Unidirectional
- Change Bidirectional Association to Unidirectional
- Change Unidirectional Association to Bidirectional
- Change Unidirectional Association to Bidirectional
- Hibernate单向一对多关联(Unidirectional One-To-Many)要点
- 重构手法20:Change Value to Reference (将值对象改为引用对象)
- 重构手法21:Change Reference to Value (将引用对象改为值对象)
- 单向关联(Unidirectional association)
- 使用连接表的单向关联(Unidirectional associations with join tables)
- Hibernate -- A unidirectional one-to-one association on a foreign key
- Hibernate关系映射 一对一双向外键关联@OneToOne Annotation方式 双向关联和单向关联的区别
- 3.7 将单向关联改为双向
- hibernate学习5之one-to-many双向关联