提取参数对象重构
编辑教程提取参数对象重构
提取参数对象重构允许您为方法选择一组参数,并为这些参数创建包装类,或者使用现有的兼容包装类。
对所选方法的所有调用都将对其参数进行适当的包装,并且包装参数的所有用法都将被新创建的参数类上的相应调用所替代。
如果传递给方法的参数数量变得太大,或者参数已经变得足够复杂,以至于它们自己的类的 first-class 处理,那么提取参数对象就很有用。另外,通常将原始参数作为参数对象进行包装,因此可以根据需要将接口和实现分离。
示例
重构前
public class A {
private void drawEdge(Graphics g, float edgeWidth,
int x1, int x2, int y1, int y2) {
final Graphics2D g2d = (Graphics2D) g;
g2d.setStroke(new BasicStroke(edgeWidth));
g.drawLine(x1, y1, x2, y2);
}
}
重构后
public class A {
private void drawEdge(Edge edge, Graphics g) {
final Graphics2D g2d = (Graphics2D) g;
g2d.setStroke(new BasicStroke(edge.getEdgeWidth()));
g.drawLine(edge.getX1(), edge.getY1(), edge.getX2(), edge.getY2());
}
}
public class Edge {
private final float edgeWidth;
private final int x1;
...
public Edge(float edgeWidth, int x1, int x2, int y1, int y2) {
this.edgeWidth = edgeWidth;
this.x1 = x1;
...
}
public float getEdgeWidth() {
return edgeWidth;
}
public int getX1() {
return x1;
}
...
}
提取参数对象
选择所需的方法。要做到这一点,请打开有问题的类进行编辑,然后在该方法上定位插入符号,在 Structure 视图中单击此类方法,或者在 UML 类图中选择它。 | |
---|---|
在主菜单或选择的上下文菜单上选择:重构丨 提取丨 参数对象。 | |
在 "提取参数对象" 对话框中: | |
在 "参数类" 部分中,指定是要创建新类,还是使用现有项来包装参数。 | |
在 "要提取的参数" 列表中,检查要包含在新类中的参数。 | |
单击 "预览" 以使 IntelliJ IDEA 搜索所选字段或方法的用法,并在 "查找" 工具窗口中显示重构预览结果。在预览中,您可以将使用实例包括在重构中或跳过它们。单击 "执行重构" 以将重构应用于所选的用法。 | |
如果您不想查看使用实例,请单击 "重构"。在这种情况下,将立即更改使用实例。 | |
如果要影响的文件是只读的,则可能会显示 "重构预览" 窗口。 |
Mos固件,小电视必刷固件
ES6 教程
Vue.js 教程
JSON 教程
jQuery 教程
HTML 教程
HTML 5 教程
CSS 教程
CSS3 教程
JavaScript 教程
DHTML 教程
JSON在线格式化工具
JS在线运行
JSON解析格式化
jsfiddle中国国内版本
JS代码在线运行
PHP代码在线运行
Java代码在线运行
C语言代码在线运行
C++代码在线运行
Python代码在线运行
Go语言代码在线运行
C#代码在线运行
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。
大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
选择支付方式:
立即支付
¥
9.99
无法付款,请点击这里
金额: 0 元
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟