On Nov 30, 2009, at 1:51 PM, Chris McDonough wrote:

> Shane Hathaway wrote:

...a good general argument, that Chris seemed to agree with and expand upon, 
and that has some merit to me.

> 
>> What do you think?
> 
> + 1 with the following caveat:
> 
> I think that method name should probably be "adapt"; "lookup"  should maybe 
> be 
> a separate method reserved for passing bare interfaces rather than objects 
> which implement interfaces, e.g:

...

1) I very much like the idea of some helpers hanging around.  However, my 
current belief is that the factory "methods" ought to be callable objects that 
allow introspection of the underlying registry.  That's where the "lookup" 
style behavior belongs, IMO, as well as other helpers.  See below for examples.

2) As argued before, I think that "adapt" is an ok name for a single object, 
but becomes a bad name once you have "multiadapters" in the mix.  I would 
prefer one of the options Matthias Lehmann proposed ("new" for instance).

3) I also think that "utility" is a bad name.  Is "singleton" two letters too 
long?  If it is, I mind "utility" less than I mind "adapter".

IFoo.new(a, b) # finds and returns result of call

IFoo.new.lookup(IA, IB) # finds and returns callable

IFoo.new.find(IA, IB) # get all registration information

IFoo.new.find_stack(IA, IB) # get an iterable of the stack all registration 
information for each registration for those two interfaces

IFoo.singleton() # finds and returns item

IFoo.singleton(name='baz') # finds and returns item

IFoo.singleton.lookup(name='baz') # same result in this case

IFoo.singleton.find(name='baz') # get all registration information



Side, but related point:

I wonder if there is value in the ability to spell

IFoo.singleton(a) # where "a" is a required object to the registration.  This 
would make utility registrations more powerful in a way that some people seem 
to have been missing.  It also makes things parallel with creation.

Gary
_______________________________________________
Zope-Dev maillist  -  Zope-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope-announce
 https://mail.zope.org/mailman/listinfo/zope )

Reply via email to