一个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
方法中复制粘贴代码? - 我怎样才能消除方法
if/elseif
中的processColor
?