PyoC是Python项目的IoC容器
项目描述
介绍
这是PyoC的组页面。这个组的目的是讨论PyoC的新特性,并在用户和项目开发者之间建立一个开放的沟通渠道。
PyoC是Python的IoC容器。它的目的是使管理组件之间的依赖关系变得更加容易(在Python中已经很方便了)。它主要面向约定优于配置的方法。
PyoC架构
让我们尝试理解PyoC是如何工作的,以及其背后的概念。
让我们先看一张图,因为图片胜过千言万语! :)
在上面的图中,你可以看到PyoC的两个主要方面。
第一个是配置,它负责确保容器理解您的依赖关系。如图所示,您可以使用更方便的ConfigurationFactory。PyoC随附InPlaceConfig和FileConfig(截至版本0.1)。
第二个是依赖关系解析。IoC容器的好处在于它为您处理了无聊的基础设施代码,如实例化类、管理它们之间的依赖关系等。它还允许您在不更改代码的情况下热插拔一个实现到另一个实现。
让我们以图中的给定依赖关系图为例。它大致对应于以下代码
class A(object): def __init__(self, b, c, d): #assigns and does something class B(object): def __init__(self, e): #assigns and does something class C(object): def __init__(self, e): #assigns and does something class D(object): def __init__(self, f): #assigns and does something class E(object): def __init__(self, g): #assigns and does something class F(object): def __init__(self, h): #assigns and does something class G(object): def __init__(self, some_param): #assigns and does something class H(object): def __init__(self, some_param): #assigns and does something
哇,这是一个深层结构。嗯,但并不完全是这样。如果你真正深入研究组件如何在你的应用程序中交互,你很快就会意识到这仅仅是一个非常简化的表示。不过,让我们创建一个类A的实例。
a = A(b, c, d)
嗯…等等…我们还没有b、c和d呢。让我们改进一下,创建它们。
b = B(e) c = C(e) a = A(b, c, d)
糟糕,我们没有e…你明白我的意思,对吧?
这是获取A的完整代码版本。
h = H("some message") f = F(h) d = D(f) g = G("some message") e = E(g) b = B(e) c = C(e) a = A(b, c, d)
看起来不太好,对吧?如果你能这样做呢?
a = IoC.resolve(A)
这不是魔法,我的朋友。这是PyoC。上面你看到的是依赖解析机制在工作。PyoC可以根据你做的配置为你创建实例并填充它们的依赖。
等等?什么?哦,你是对的!我从未展示过任何配置。
让我们检查一下上面的场景的InPlaceConfig。
config = InPlaceConfig() config.register("b", B) config.register("c", C) config.register("d", D) config.register("e", E) config.register("f", F) config.register("g", G) config.register("h", H)
“你在开玩笑吧,对吧?”其实并没有,亲爱的读者。就是这样。只要你的类在构造函数中使用register函数的第一个参数指定的属性名作为参数名,你就没问题了。
我知道这有点难以消化。更多内容将很快作为博客文章/文档出现。
现在最好的例子是可以在源代码中找到的测试用例。
项目速查表
项目Google Groups页面 - http://groups.google.com/group/pythonioc
项目约定: http://groups.google.com/group/pythonioc/web/conventions
链接和博客文章: http://groups.google.com/group/pythonioc/web/Links%20and%20Blog%20Posts
项目JIRA(问题和版本管理) - http://jira.stormwindproject.org:8080/browse/PYOC
项目Subversion服务器: http://svn.stormwindproject.org/svn/PyoC/Trunk/ (svn co http://svn.stormwindproject.org/svn/PyoC/Trunk/ PyoC)
PyPI页面: http://pypi.python.org/pypi/PyoC/
当前版本文档: -
项目详情
PyoC-0.1.1dev.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a2eaf13855ea475c20905812603485e341acf30e75384371b0adaf1913ddca15 |
|
MD5 | 5f7bf1433777b8d25ded3c0c05c0dec3 |
|
BLAKE2b-256 | 73a955e23285ae8bef4a1890c325961ff2609322bef08d16736f04082d020f3d |