这是我参与8月更文挑战的第12天,活动详情查看:8月更文挑战
Workflow System
我们将多个不同的处理模块连接在一起,最后得出一个自己需要结果的有向无环图(Directed Acyclic Graph/DAG),称为一个工作流系统Workflow System。
- 复制模式
- 过滤模式
- 分离模式
- 合并模式
复制模式(Copier Pattern)
复制模式通常是将单个数据处理模块中的数据,完整地复制到两个或更多的数据处理模墺中,然后再由不同的数据处理模块进行处理。 工作流系统图通常如下图所示。
过滤模式( Filter Pattern)
过滤模式的作用是过滤掉不符合特定条件的数据。 在数据集通过了这个数据处理模块后,数据集会缩減到只剩下符合条件的数据。工作流系统图通常如下图所示。
分离模式( Splitter Pattern)
如果你在处理数据集时并不想丟弃里面的任何数据,而是想把数据分类为不同的类别来进行处理时,你就需要用到分离模式来处理数据。它的工作流系統图通常如下图所示。
合并模式( Joiner Pattern)
合并模式会将多个不同的数据集转換集中到一起,成为一个总数据集,然后将这个总的数据集放在一个工作流中进行处理。
实践
问题
在一个航空预定系统中,我们需要处理用户注册、购买机票和出行前24小时的提醒等功能。在这整个过程中,系统的数据处理运用了哪几个设计模式呢?
解答
1.注册
合并模式(因为注册渠道可能会有手机号注册、邮箱注册、微信注册等等不同的渠道,所以需要合并)
2.购买机票
过滤+合并(首先过滤出用户查找的航班机票信息、之后查找出符合条件的机票由于可能来自不同的渠道,所有需要合并后返回给用户)
3.提醒
复制+过滤+分离
- 过滤:根据时间、地点等因素过滤出需要给予提醒的用户and机票
- 复制:有可能需要对同一份数据(勾选多种提醒方式的用户)进行不同的处理(邮件通知or电话通知or短信通知)
- 分离:将前面过滤出的用户进行分成3组,分别对应(邮件通知+电话通知+短信通知)