博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
流程变换与抽象
阅读量:6948 次
发布时间:2019-06-27

本文共 601 字,大约阅读时间需要 2 分钟。

最近在修改一个比较复杂流程的时发现了代码的流程比较复杂经常象右边哪样写的蛮多的。
然后分析一下发现实际它是没有对流程进行一下抽象。

这样就造成了代码不太好理解了!

流程A和流程B是属于同一个层面的事情。(比如如果一个购物车有打折,哪么打折就是属于同一个层面的事情, 你必须抽象出类这种东西出来处理它,而不能写成 每个抽象下面还有它的流程 , 实际上 模式设计里面也有一个类似的模式 职责链, 这样可以把打折后面的步骤 加到打折哪边去,不会造成很大的复杂度。抽象的方法跟这边不太一样。 类似于工作流, 按活动来抽象。)

 

我们最好是一块处理。如果象另边这样处理的话 在D后面又出现两个分支流程 E和F。哪么另边方法就会变成一个非常宠大的树。代码复杂度超级高。

而左边的不会这样,它永远就只有一个主线。而清晰的主线 。很容易阅读和修改

 

图片的文字可能看不太清楚。

 

流程A和流程B不太一样。但是结束后都是走
流程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();}

同一个层面的事情要去抽象出来!

转载地址:http://mkuil.baihongyu.com/

你可能感兴趣的文章
Service IP 原理 - 每天5分钟玩转 Docker 容器技术(137)
查看>>
Morena for accessing image acquisition
查看>>
ConcurrentModificationException
查看>>
selenium + java po模式
查看>>
day-15 磁盘挂载 磁盘格式化
查看>>
Laravel 5.3 windows环境安装
查看>>
shell自动收集服务器硬件系统信息通过web页面显示
查看>>
extjs.treePanel在ie9下滚动条的显示问题
查看>>
supervisor进程管理工具
查看>>
自定义toast实现
查看>>
shell脚本备份数据库
查看>>
解决ant编译中出现“includeantruntime was not set”警告的问题
查看>>
常用html元素的取值和赋值方法总结
查看>>
分析一个闭包函数
查看>>
Nginx的静态文件合并请求,加快网站的加载速度
查看>>
linux底层内存管理--内核空间的伙伴系统
查看>>
CentOS7安装配置svn及svn hook实战
查看>>
Unit 11 电话转接
查看>>
比特币创业公司Circle首获数字货币许可证
查看>>
DHCP中继数据包互联网周游记
查看>>