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无法设置@Async方法   在Java中设置链表   未设置id时遇到java StaleObjectStateException   java如何保存程序的状态并加载它?   java映射类和schemaderived类之间有什么区别?   控制器类中的java全局变量在最新会话打开时被覆盖   java Hystrix和连接池   java Sonar在我不关闭ignite对象时引发拦截器问题   java无法在Junit TestCase中为控制器设置Mockito值   java保证异步传递消息   java如何高亮显示按钮,直到为微调器提供有效值?   java在Android中使用ImageView控件创建错误   JMX垃圾收集和系统之间的java差异。gc()?   java在尝试向标记添加信息窗口时卡住了?   java JavaFX检测与后台的冲突   java将光标放在按钮上时更改按钮的位置   java Maven。如何从paren pom继承配置文件。xml?   带空格的Java填充字符串   java将两个对象设置为相等,并找到其布尔结果