我想在几个外部网站上搜索模式,并希望通用界面输入一次,并在同一视图中收集所有结果。因此,我目前正在构建一个项目,该项目由能够向其他网站发送请求的Web服务器(用于用户界面)组成。
我计划使用 Bottle 或 Flask 来快速启动底层网络服务器功能,并希望采用插件架构。
由于我不知道我现在要访问多少个网站,并且由于每个网站的解析方式不同,以及信息量,我希望每个插件添加都需要尽可能少的码。只解析过程。例如,添加要访问的新网站不得要求修改所有数据模型,视图模板等。
所以,我在想一个核心程序向模块发送和接受有限数量的通用函数。 Core的信息类型有限,每个模块都能提供部分或全部类型。
我真正的问题如下:我应该使用OOP 多态或 imp 模块( load_source )来使用我的模块吗?
每个模块都可以是一个通用模块类构建的类,或者每个模块可以是独立的,包含核心可用的函数,用 imp.load_source()调用它们。第二个选项让我想到导出DLL函数以将它们与C / C ++程序一起使用。
我一直在阅读this post,非常有趣,我仍然想知道子类是否更好?
感谢您的建议!
答案 0 :(得分:0)
您的问题实际上由两部分组成:
"多态性"问题涉及到后来的问题。所以可以同时拥有你建议的内容:
使用imp.load_source
来获取可以在稍后使用插件之前配置的多态子类。
但我会建议第1部分使用"标准" setuptools的机制因为:
sys.path
或插件-dir 是与语言的打包和分发系统密切相关的任务。 从长远来看,基于分发/包装的解决方案永远是插件的更可靠选择。
如果您看一下为比较各种插件架构而精心设计的exemplary application,您会注意到所需的代码几乎比其他代码要小,而它可以实现更多。