Python设计建议

时间:2013-07-23 14:28:20

标签: python design-patterns

我已经在python中为某些特定类型的任务编写了一个通用框架。它是一个服务于不同请求和操作的Web服务器。许多项目都可以使用此框架,每个项目都有一组不同的验证规则。现在,我只是为每个项目更新我的脚本。

我正在考虑将此验证部分外部化,我该如何解决这个问题?验证不仅仅是现场内容验证;我正在考虑使用一个配置文件来映射incoming request <-> validationModule之类的/site1/a/b.xml=validateSite1.py,如果请求是site1,则将该模块导入if模式。所以我将为每个站点提供通用框架脚本+单个脚本。

有更简洁的方法吗?

1 个答案:

答案 0 :(得分:1)

我认为最好将Python本身用作从URL路径到验证模块的顶级映射。配置可能如下所示:

import site1
import site2
def dispatch(uri):
    if uri.startswith('/site1/'):
        return site1.validate(uri)
    elif uri.startswith('/site2/):
        return site2.validate(uri)

这个简单的例子可能会诱使你将它“抽象”成一个更“通用的框架”,将字符串转换为文件名以用作验证脚本。以下是执行上述操作的一些优点:

  1. 性能:站点模块只导入一次,我们不会按请求查找文件名。
  2. 灵活性:如果您稍后决定调度逻辑更复杂,您可以轻松使用任意Python代码来处理它。永远不需要扩展您的映射系统本身 - 只需要更复杂的配置文件。
  3. 单一语言。