python的抽象工厂功能

abstractfactor的Python项目详细描述


版权所有(c)2016-2017 David Betz

Build StatusPyPI version

有关用法,请参见test_provider.py unit test。

基本上是抽象工厂模式的实现。

在我使用这个的一个系统中,我为每种类型的 我系统里的东西。所以,搜索工厂,云存储工厂, queuefactory、aristotlefactory等…这些将为id实现 接口,如icloudstorageprovider(在node中,它只是一个类)。

每一个都有自己的开关/外壳(或其他)来创建 它的工厂。例如,我可能在一个yaml文件中有config 指定我想使用mongo作为我的亚里士多德提供者 (“亚里士多德”是大多数人错误地称之为“nosql”)。

首先,创建工厂(为 系统):

abstractFactory = AbstractFactory()

然后,添加工厂:

abstractFactory.set(SearchFactory)
abstractFactory.set(CloudStorageFactory)
abstractFactory.set(QueueFactory)
abstractFactory.set(AristotleFactory)

到时候,只需向您的提供商咨询即可:

provider = abstractFactory.resolve(IAristotleProvider)

你的代码应该。不是。关心。关于。蒙戈。它应该是你的 配置之类的东西可以解决这个问题。不要把你的 提供者。

还要注意,解析器还接受不同的参数 灵活性:

provider = abstractFactory.resolve(IAristotleProvider, "alternateConnectionString", collection="log")

不管随机的博主怎么说,服务定位是非常棒的,而且 提供良好的去耦。

看看测试提供的Mock示例;它们相当于 广泛的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将Scanner对象作为构造函数参数传递给UserInterface类   spring未能启动bean“subtocolWebSocketHandler”;嵌套的例外是java。lang.IllegalArgumentException:没有处理程序   Java EE应用程序中后台服务的多线程Java线程(设置守护进程和优先级)?   java Pull to refresh返回列表的第一个位置   无法将comparator类转换为java。可比的   java将json从servlet传递到dojo   JavaHibernate:将子类实例转换为超类实例   java警告调用servlet类时非法反射访问   java静态变量值   java@Entity和@embeddeble之间有什么区别   java将作业配置导入公共作业配置类(注释配置)   sql公共表表达式(以values语句开头)在java中给出错误   java在ImageJ中使用ImageProcessor   java PostgreSQL executeBatch()会随着时间的推移而变慢   java在安卓中以表格形式排列sqllite表数据?   java中SVG的swing定制呈现   java删除与另一个实体映射的实体   java何时/如何添加ListView适配器,使用back按钮恢复它?(片段)   java为什么IBinder和Binder之间的类型转换不是非法的?   java在方法参数列表中使用ArrayList或List