A Request
类有一个属性colorType
它可以是不同的颜色。根据颜色的类型,它会涉及到不同的处理方式。如何更好地设计此代码和逻辑
这里是控制器代码:
def colorInstance = Color(params)
//validates and checks the params. Also, based on some logic sets the `colorType` property
//to be appropriate color
if (colorInstnace.validate())
{
colorService.processColor(colorInstance)
}
这里是colorService
代码:
void processColor(Color colorInstance) {
if (colorInstance.colorType == "green")
processGreen(colorInstance)
else if (colorInstance.colorType == "red")
processRed(colorInstance)
....
......
}
processGreen(Color colorInstance) {
//common code
//code specific to colortypes that are GREEN
//more common code
}
processRed(Color colorInstance) {
//common code
//code specific to colortypes that are RED
//more common code
}
问题
- 我如何更改代码的服务,使我不必复制粘贴所有
processXXX
中的代码方法? - 如何消除
processColor
方法中的if/elseif
?
如果他使用Groovy,他应该继续使用类型安全的枚举,而不是整型常量。 – chrylis