jer*_*ome 2 java refactoring software-design
我的代码具有类似修改并返回传递的对象参数的方法。
在我看来,这就像一种糟糕的代码味道。
public class Creator {
public MyClass create(MyClass param) {
SomeClass attr1 = createAttr1();
SomeClass attr2 = createAttr2();
//... more creation
param.setAttr1(attr1);
param.setAttr2(attr2);
//... set other created attributes.
return param;
}
}
public class MyApp {
public static void main(String[] args) {
Creator creatorProcesss = new Creator();
MyClass myClass = new MyClass();
myClass = creatorProcesss.create(myClass);
}
}
Run Code Online (Sandbox Code Playgroud)
有没有适当的方法来重构它?
您可以将方法的返回类型更改为void,用法将变为:
creatorProcesss.create(myClass);
Run Code Online (Sandbox Code Playgroud)
或者更好:
creatorProcesss.initialize(myClass);
Run Code Online (Sandbox Code Playgroud)
由于您的方法不会创建新实例,因此它会初始化传递的实例。
您还可以反转该过程 - 使用一个initialize方法来MyClass接受Creator参数并修改当前MyClass实例。
那么你main就会变成:
Creator creatorProcesss = new Creator();
MyClass myClass = new MyClass();
myClass.initialize(creatorProcesss);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1866 次 |
| 最近记录: |