处理概括关系之一 :Pull Up Field(值域上移)

两个subclasses 拥有相同的值域。

将此一值域移至superclass。

动机(Motivation)

如果各个subclass 是分别开发的,或者是在重构过程中组合起来的,你常会发现它们拥有重复特性,特别是值域更容易重复。这样的值域有时拥有近似的名字,但也并非绝对如此。判断若干值域是否重复,惟一的办法就是观察函数如何使用它们。如果它们被使用的方式很相似,你就可以将它们归纳到superclass 去。

本项重构从两方面减少重复:首先它去除了「重复的数据声明」;其次它使你可以将使用该值域的行为从subclass 移至superclass,从而去除「重复的行为」。

作法(Mechanics)

·针对待提升之值域,检查它们的所有被使用点,确认它们以同样的方式被使用。

·如果这些值域的名称不同,先将它们改名,使每一个名称都和你想为superclass 值域取的名称相同。

·编译,测试。

·在superclass 中新建一个值域。
Ø如果这些值域是private ,你必须将superclass 的值域声明为protected,这样subclasses 才能引用它。

·移除subclass 中的值域。

·编译,测试。

·考虑对superclass 的新建值域使用Self Encapsulate Field 。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值