python的抽象工厂功能
abstractfactor的Python项目详细描述
版权所有(c)2016-2017 David Betz
有关用法,请参见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示例;它们相当于 广泛的。