[Zope-dev] implementing zope.component 4.0
gary.poster at gmail.com
Mon Nov 30 14:24:40 EST 2009
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.
More information about the Zope-Dev