【发布时间】:2012-10-11 12:41:36
【问题描述】:
我正在开发一个 Web 服务(在 Ruby 中),它需要做一些 它收到的每条消息都有不同的内容。
在我的网络服务可以处理消息之前,它必须做不同的事情:
- 清理(例如删除 HTML/JS)
- 检查格式(例如提供的有效电子邮件?)
- 查看黑名单中的IP
- 调用第 3 方网络服务
- 加上 10-30 个其他东西
我正在考虑实现一个过滤器/复合过滤器架构 其中每个步骤/阶段都是一个过滤器。例如,我可以拥有这些过滤器
- 清理输入过滤器
- 电子邮件过滤器
- 国家代码过滤器
- 黑名单过滤器
每个过滤器都应该可以拒绝消息,所以我正在考虑 过滤器应该引发/抛出异常。
这将提供很大的灵活性,并希望代码库是 容易理解。
你是怎么做到的?以上设计的优缺点是什么?
【问题讨论】:
标签: ruby design-patterns architecture business-logic