【发布时间】:2014-03-10 18:50:25
【问题描述】:
我想寻求帮助和一些建议如何重构我收到的源代码。 这是我的方法的伪代码:
public void generalMethod(String type) {
InputParameters params = new InputParameters();
if (type.equals("someKey1"){
decodeSomeKey1(params);
} else if (type.equals("someKey2"){
decodeSomeKey2(params);
} else if (type.equals("someKey3"){
decodeSomeKey3(params);
} else if (type.equals("someKey4"){
etc...
}
}
}
所有方法都有相同的输入参数。在第一步中,我创建了新接口并为每个方法创建了实现创建接口的单独类。
interface ISomeInterfaceDecoder {
void decode(InputParameters params);
}
class DecodeSomeKey1 implements ISomeInterfaceDecoder {
@Override
public void decode(InputParameters params) {
// some implementation
}
}
class DecodeSomeKey2 implements ISomeInterfaceDecoder {
@Override
public void decode(InputParameters params) {
// some implementation
}
}
然后我创建工厂类如下:
类工厂{
ISomeInterfaceDecoder getDecoder(String type) {
if (type.equals("someKey1"){
return new DecodeSomeKey1();
} else if (type.equals("someKey2"){
return new DecodeSomeKey2();
} else if (type.equals("someKey3"){
return new DecodeSomeKey3());
} else if (type.equals("someKey3"){
etc...
}
}
}
}
这些更改后的代码如下所示:
类 SomeClass {
Factory factory = new Factory();
public void generalMethod(String type) {
InputParameters params = new InputParameters();
ISomeInterfaceDecoder decoder = factory.getDecoder(type);
decoder.decode(params);
}
}
这个方法的代码看起来更好但是... 这种方法经常被调用。每次创建给定类的新实例时。这可能会导致性能问题。所以,我认为这不是解决这个问题的好方法。 你能给我一些建议我应该如何重构这段代码吗? 提前感谢您的帮助。
【问题讨论】:
标签: java refactoring