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

简介: 将单项关联改为双向关联(Change Unidirectional Association to Bidirectional):两个类都需要对方特性,但其间只有一条单向连接;添加一个反向连接,并使修改函数能够同时更新两条连接

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

两个类都需要对方特性,但其间只有一条单向连接;添加一个反向连接,并使修改函数能够同时更新两条连接

一、动机

需要一个反向指针,又不能绕道而行

二、做法

1、在被引用类中添加一个字段,用以保存反向指针

2、决定由哪个类--引用端还是被引用端--控制关联关系

3、在被控端建立一个辅助的函数,其命名应该清楚指出它的有限用途

4、如果既有的修改函数在控制端,让它负责更新反向指针

5、如果既有的修改函数在被控端,就在控制端建立一个控制函数,并让既有的修改函数调用这个新建的控制函数

目录
相关文章
|
JSON Java 数据库
代码重构实战-将值对象改为引用对象(Change Value to Reference)
一个数据结构中可能包含多个记录,而这些记录都关联到同一个逻辑数据结构。例如,我可能会读取一系列订单数据,其中有多条订单属于同一个顾客。遇到这样的共享关系,既能将顾客信息作为值对象看待,也能将其视为引用对象
111 0
|
数据库
一对多关系domain Model中设置使用AutoMapper时出错
一对多关系domain Model中设置使用AutoMapper时出错
177 0
一对多关系domain Model中设置使用AutoMapper时出错
|
存储 iOS开发 开发者
追根问底:Objective-C关联属性原理分析
Objective-C是一种动态性很强的语言,所谓动态能力,也可以理解为运行时能力。对于Objective-C开发者来说,动态性所带来的编程便利无处不在。例如通过Category类别来扩展已有类的功能。可以使已有类拥有新的方法和属性。
174 0
|
缓存 Java 数据库连接
Hibernate一对多关联的两个关键属性cascade和inverse(十一)
Hibernate一对多关联的两个关键属性cascade和inverse(十一)
128 0
Hibernate一对多关联的两个关键属性cascade和inverse(十一)
|
JSON 前端开发 API
剥开比原看代码12:比原是如何通过/create-account-receiver创建地址的?
作者:freewind 比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 在比原的dashboard中,我们可以为一个帐户创建地址(address),这样就可以在两个地址之间转帐了。
1408 0
重构——25将双向关联改为单向关联(Change Bidirectional Association to Unidirectional)
将双向关联改为单向关联(Change Bidirectional Association to Unidirectional):两个类之间有双向关联,但其中一个类如今不再需要另一个类的特性;去掉不必要的关联
1794 0
重构——21将引用对象改为值对象(Change Reference to Value)
将引用对象改为值对象(Change Reference to Value):你有一个引用对象,很小且不可改变,而且不容易管理;将它变为一个值对象
1426 0
重构——20将值对象改为引用对象(Change Value to Reference)
将值对象改为引用对象(Change Value to Reference):你从一个类衍生出许多彼此相等的实例,希望将它们替换为同一对象;将这个值对象变成引用对象
1378 0

热门文章

最新文章