我搜索了许多关于重构大型switch
语句的文章。
但他们不做我想做的事。我要遇到的问题是有一个巨大的 switch 语句,它根据两个不同的值调用不同的方法,比如说 atype
和 a code
。
目前,我会处理这样的情况:
switch (type)
{
case Types.Type1:
handleType1(code);
break;
case Types.Type2:
handleType2(code);
break;
}
void handleTypeN(code)
{
switch (code)
{
...
}
}
也许结合工厂和命令模式的东西会帮助我?我一定遗漏了一些明显的东西。
你将如何重构这段代码?
我可能需要更具体地了解我所面临的情况。
我正在从服务器接收数据包。一个数据包包含一个类型和一个代码以及一些特定信息。
一旦数据到达,我就检索数据包的type
和code
,然后它进入 的switch
语句type
,在确定type
调用特定方法以code
在数据包上执行切换之后。
处理代码的方法现在进一步解码数据包并完成该过程。
+----------+ +----------+
| | Packet | |
| Server | -------------> | Client |
| | | |
+----------+ +----------+
|
|
(Switch on the type of the packet and call a specific method)
|
|
(Switch on the code of the packet and call a specific method)
|
|
(Respond to the server or not)