具有太多类的命令模式

sid*_*ate 5 java design-patterns

我们的遗留代码具有依赖于事件和对象类型的if else块的长代码

if(event == A && objectType == O1){
.....
}
else if (event == A && objectType == O2){
 ....
}
else if (....)
....
....
Run Code Online (Sandbox Code Playgroud)

随着越来越多的条件的引入,我正在考虑用每个条件的Command模式替换这个逻辑.但是所需的类数量是(事件数量)*(对象类型的数量).有没有更简单的方法来重构这段代码?

fge*_*fge 6

创建一个类封闭eventobjectType,使其实现.equals().hashCode().为每个执行块创建一个泛型类.

然后,您将能够使用a Map和简单的查找将返回执行所需的内容.