最近在修改一个比较复杂流程的时发现了代码的流程比较复杂经常象右边哪样写的蛮多的。
然后分析一下发现实际它是没有对流程进行一下抽象。
然后分析一下发现实际它是没有对流程进行一下抽象。
这样就造成了代码不太好理解了!
流程A和流程B是属于同一个层面的事情。(比如如果一个购物车有打折,哪么打折就是属于同一个层面的事情, 你必须抽象出类这种东西出来处理它,而不能写成 每个抽象下面还有它的流程 , 实际上 模式设计里面也有一个类似的模式 职责链, 这样可以把打折后面的步骤 加到打折哪边去,不会造成很大的复杂度。抽象的方法跟这边不太一样。 类似于工作流, 按活动来抽象。)
我们最好是一块处理。如果象另边这样处理的话 在D后面又出现两个分支流程 E和F。哪么另边方法就会变成一个非常宠大的树。代码复杂度超级高。
而左边的不会这样,它永远就只有一个主线。而清晰的主线 。很容易阅读和修改
![](https://i-blog.csdnimg.cn/blog_migrate/dff01139789b860bbff28b829ca59f78.jpeg)
图片的文字可能看不太清楚。
流程A和流程B不太一样。但是结束后都是走
流程C和流程D。
也就是流程A和流程C返回的结果是一样的。
左边的是 流程A和流程C 在同一个地方处理,处理好后处理 C 和D 为代码的话用函数来表示
也就是流程A和流程C返回的结果是一样的。
左边的是 流程A和流程C 在同一个地方处理,处理好后处理 C 和D 为代码的话用函数来表示
if (A)
{A()}
else
{B()};
C();
D();
右边的是分开之后 流程A流程C和流程D一起处理了
If (A)
{A();C();D();}
Else
{B();C();D();}
同一个层面的事情要去抽象出来!