avalon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Berin Loritsch <blorit...@apache.org>
Subject Re: IOC policies
Date Wed, 05 Feb 2003 13:10:33 GMT
Daniel Krieg wrote:
> I am attempting to implement my own Container and have some questions
> about Inversion of Control patterns.  I am attempting to create a
> Container that manages a single component type at a time.  The
> contained components may be associated with other components held
> within other container instances.  The Container should be
> responsible for resolving these dependencies within the
> ServiceManager for the component.  Correct so far?

Correct.

> 
> Now, the Container is also a component with associations to other
> components.  Is it violating IOC if the Container-associated
> components are made available to the child components not within the
> ServiceManager but within the Context?  After all, the
> Container-associated components are implicit services to the
> Contained components and therefore should not need to be declared as
> a dependency.

Are you saying that you have a Component that implements the
"Containment" pattern (as I dubbed it), meaning that you have
developed a component that also happens to be a container?


Stricly speaking with IOC, as long as the Container provides and
manages all the resources made available to the component, then
you are implementing it correctly.  If the resource being made
available is from a container's container, then it is still IOC.

However, it is not a clean use of the Context object to pass
references to components.  While we can't tell you not to do it,
the ServiceManager was made for that purpose.

> 
> What this really means that a child Context has indirect access to
> the contents of its parent's ServiceManager.  Does this seem
> reasonable or am I missing the boat somewhere?

You can do that with the ServiceManager as well.  One of the contracts
with ServiceManager is that they can be hierarchical.

> 
> I think a component's ServiceManager should only provide peer
> relationships and components related to a component's Container
> should be part of a component's Context.

Nope.  Not necessarily.  A ServiceManager is allowed to defer
component lookups to a parent container, thus preserving IOC and
the contracts surrounding where to get your components.


---------------------------------------------------------------------
To unsubscribe, e-mail: avalon-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: avalon-dev-help@jakarta.apache.org


Mime
View raw message