使用Eclipse自动重构特性的方法与原因 - 编程入门网
etMotor()
{
return motor;
}
public void setMotor(String string)
{
motor = string;
}
}
您还有一个 Vehicle 的子类,类名为 Automobile ,如清单6所示。 清单6. Automobile 类
请注意, Vehicle 有一个属性是 motor 。如果您知道您将永远只处理汽车,那么这样做就好了;但是如果您也允许出现划艇之类的东西,那么您就需要将 motor 属性从 Vehicle 类下放到 Automobile 类中。为此,您可以在 Outline 视图中选择 motor ,然后选择 Refactor > Push Down。 Eclipse 还是挺聪明的,它知道您不可能总是单单移动某个属性本身,因此还提供了 Add Required 按钮,不过在Eclipse2.1 中,这个功能并不总是能正确地工作。您需要验证一下,看所有依赖于这个属性的方法是否都推到了下一层。在本例中,这样的方法有两个,即与 motor 相伴的 getter 和 setter 方法,如图3所示。 图 3. 加入所需的成员 使用Eclipse自动重构特性的方法与原因(5)时间:2009-11-10 ibm David Gallardo在按过 OK按钮之后, motor 属性以及 getMotor() 和 setMotor() 方法就会移动到 Automobile 类中。清单7显示了在进行了这次重构之后 Automobile 类的情形。 清单 7. 经过重构的 Automobile 类
Pull Up 重构与 Push Down 几乎相同,当然 Pull Up 是将类成员从一个类中移到其父类中,而不是子类中。如果您稍后改变主意,决定还是把 motor 移回到 Vehicle 类中,那么您也许就会用到这种重构。同样需要提醒您,一定要确认您是否选择了所有必需的成员。 Automobile 类中具有成员 motor,这意味着您如果创建另一个子类,比方说 Bus ,您就还需要将 motor (及其相关方法)加入到 Bus 类中。有一种方法可以表示这种关系,即创建一个名为 Motorized 的接口, Automobile 和 Bus 都实现这个接口,但是 RowBoat 不实现。 创建 Motorized 接口最简单的方法是在 Automobile 上使用 Extract Interface 重构。为此,您可以在 Outline 视图中选择 Automobile ,然后从菜单中选择 Refactor > Extract Interface。您可以在弹出的对话框中选择您希望在接口中包含哪些方法,如图4所示。 图 4. 提取 Motorized 接口 点击 OK 之后,接口就创建好了,如清单8所示。 清单 8. Motorized 接口
同时, Automobile 的类声明也变成了下面的样子:
使用Eclipse自动重构特性的方法与原因(6)时间:2009-11-10 ibm David Gallardo使用父类 本重构工具类型中最后一个是 User Supertyp Where Possible。想象一个用来管理汽车细帐的应用程序。它自始至终都使用 Automobile 类型的对象。如果您想处理所有类型的交通工具,那么您就可以 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |