Adding explanation for Singleton and Callable providers delegation

This commit is contained in:
Roman Mogilatov 2015-07-20 19:31:31 +03:00
parent 996fc4ecbf
commit 0efebb337f
5 changed files with 95 additions and 0 deletions

View File

@ -5,6 +5,9 @@ Callable providers
some injections. Every call of this provider returns result of call of initial some injections. Every call of this provider returns result of call of initial
callable. callable.
Callable providers and injections
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
``Callable`` provider uses ``KwArg`` injections. ``KwArg`` injections are ``Callable`` provider uses ``KwArg`` injections. ``KwArg`` injections are
done by passing injectable values as keyword arguments during call time. done by passing injectable values as keyword arguments during call time.
@ -36,3 +39,35 @@ Example:
# Making some asserts (client's code): # Making some asserts (client's code):
hashed_password = password_hasher('super secret') hashed_password = password_hasher('super secret')
assert password_verifier('super secret', hashed_password) assert password_verifier('super secret', hashed_password)
Callable providers delegation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
``Callable`` provider could be delegated to any other provider via any kind of
injection. Delegation of ``Callable`` providers is the same as ``Factory`` and
``Singleton`` providers delegation, please follow *Factory providers
delegation* section for example.
``Callable`` delegate could be created obviously using
``Delegate(Callable())`` or by calling ``Callable.delegate()`` method.
Example:
.. code-block:: python
"""`Callable` providers delegation example."""
import sys
from objects.providers import Callable
from objects.providers import Delegate
# Some callable provider and few delegates of it:
callable_provider = Callable(sys.exit)
callable_provider_delegate1 = callable_provider.delegate()
callable_provider_delegate2 = Delegate(callable_provider)
# Making some asserts:
assert callable_provider_delegate1() is callable_provider
assert callable_provider_delegate2() is callable_provider

View File

@ -102,3 +102,33 @@ Example:
# Making some asserts: # Making some asserts:
assert user_service3 is not user_service1 assert user_service3 is not user_service1
Singleton providers delegation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
``Singleton`` provider could be delegated to any other provider via any kind of
injection. Delegation of ``Singleton`` providers is the same as ``Factory``
providers delegation, please follow *Factory providers delegation* section for
example.
``Singleton`` delegate could be created obviously using
``Delegate(Singleton())`` or by calling ``Singleton.delegate()`` method.
Example:
.. code-block:: python
"""`Singleton` providers delegation example."""
from objects.providers import Singleton
from objects.providers import Delegate
# Some singleton provider and few delegates of it:
singleton_provider = Singleton(object)
singleton_provider_delegate1 = singleton_provider.delegate()
singleton_provider_delegate2 = Delegate(singleton_provider)
# Making some asserts:
assert singleton_provider_delegate1() is singleton_provider
assert singleton_provider_delegate2() is singleton_provider

View File

@ -0,0 +1,16 @@
"""`Callable` providers delegation example."""
import sys
from objects.providers import Callable
from objects.providers import Delegate
# Some callable provider and few delegates of it:
callable_provider = Callable(sys.exit)
callable_provider_delegate1 = callable_provider.delegate()
callable_provider_delegate2 = Delegate(callable_provider)
# Making some asserts:
assert callable_provider_delegate1() is callable_provider
assert callable_provider_delegate2() is callable_provider

View File

@ -0,0 +1,14 @@
"""`Singleton` providers delegation example."""
from objects.providers import Singleton
from objects.providers import Delegate
# Some singleton provider and few delegates of it:
singleton_provider = Singleton(object)
singleton_provider_delegate1 = singleton_provider.delegate()
singleton_provider_delegate2 = Delegate(singleton_provider)
# Making some asserts:
assert singleton_provider_delegate1() is singleton_provider
assert singleton_provider_delegate2() is singleton_provider