Python设计建议

Python设计建议,python,design-patterns,Python,Design Patterns,我已经用python为某些特定类型的任务编写了一个通用框架。它是一个Web服务器,提供不同的请求和操作。这个框架可以被许多项目使用,每个项目都有一套不同的验证规则。现在,我正在为每个项目更新脚本 我正在考虑将这个验证部分外部化,我该怎么做?验证不仅仅是字段内容验证;我正在考虑使用一个配置文件来映射传入请求validationModule类似/site1/a/b.xml=validateSite1.py,如果请求是针对site1的,则在if条件下导入此模块。因此,我将为每个站点提供通用框架脚本+单

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

我正在考虑将这个验证部分外部化,我该怎么做?验证不仅仅是字段内容验证;我正在考虑使用一个配置文件来映射
传入请求validationModule
类似
/site1/a/b.xml=validateSite1.py
,如果请求是针对
site1
的,则在if条件下导入此模块。因此,我将为每个站点提供通用框架脚本+单独的脚本


有更干净的方法吗?

我认为最好使用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)
这个简单的示例可能会诱使您将其“抽象”为一个更“通用的框架”,该框架将字符串转换为文件名以用作验证脚本。以下是执行上述操作的一些优点:

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

  • 是的,这种方法有很大的灵活性;我觉得唯一的问题是,导入模块的数量将继续增加,导入需要跟踪,在将来删除过时的模块等等