public class HelloBean {
public void sayHello() {
System.out.println("朋友,时刻重构吧!");
}
}
RefactoringIDETest.java
package ch2.extractandmovemethod.prototype;
public class BeanFactory {
public Book getBook() throws Exception {
return (Book)BeanUtils.instantiateClass(
"ch2.changemethodsignature.prototype.Book");
}
}
显然getBook()作为BeanFactory的主力工厂方法它不够通用,因此需要适当改变它的方法签名和实现。现在用Eclipse来实现上述步骤,首先双击选中getBook()方法,点击鼠标右键,找到重构菜单“Refactor”,点选“Change Method Signature”,在随后出现的对话框中,为getBook()方法重命名(命名为“getBean”);调整它的返回值为“Object”、访问权限为“public”;增加两个String型的参数“packageName”和“className”,如图5所示。
图5 自动改变方法签名
去掉方法内的强制转型后,得到初步重构后的代码,如下所示。
BeanFactory.java
public class BeanFactory {
public Object getBean(String packageName, String className) throws Exception {
return BeanUtils.instantiateClass(packageName + className);
}
}
发现方法参数冗余,使用一个Bean的标识符就足够了。迅速作出再次重构,通过Eclipse的“Change Method Signature”菜单去掉一个参数(使用图5中的Remove按钮),并改变参数名称,得到最后的代码,如代码所示。
代码 BeanFactory.java
package ch2.changemethodsignature;
import ch2.utils.BeanUtils;
public class BeanFactory {
public Object getBean(String beanIdentifier) throws Exception {
return BeanUtils.instantiateClass(beanIdentifier);
}
}