我有一个Django应用程序,我需要针对不同的输入遵循不同的工作流程。
我通过POST
端点收到数据有效负载的输入参数。根据输入,我需要触发不同的函数,相应地处理数据,最后将其保存在数据存储中。
一种选择是编写if-else
,但是随着代码的增长,编写if-else
很难维护。
例如: -
If input1, then function1(), process1(), save1()
elif input2, then function2(), process2(), save2()
我已查看过Intellect,django-viewflow和许多其他商业规则库,但不确定推荐的做法。
如果有人能为我提供一个虚拟示例或一个开源项目,通过它我可以理解它的实现,它将会有所帮助。
答案 0 :(得分:1)
我认为你没有构建庞大的应用程序,对吧?
因此,要关注不同输入的不同进程的根要求,您可以创建从Base对象Processor
扩展的多个对象,例如AppleProcessor
或OrangeProcessor
。所有这些都共享相同的接口。
然后在您的后勤部分,您可以创建一个字典,如下所示:
processors = {"Apple": AppleProcessor, "Orange": OrangeProcessor}
然后很容易将其使用:
processor = processors.get(input)
processor.process(*some_needed_args, **some_needed_kwargs)
result = processor.get_result()
这只是一个简单的解决方案,如果你有更多限制,它可能会变得更加复杂。