[Zope-dev] implementing zope.component 4.0

Martin Aspeli optilude+lists at gmail.com
Tue Dec 1 11:34:24 EST 2009


Joachim König wrote:
> Martin Aspeli wrote:
>> Clearly, it could. But that's not the way we went. Changing it now would 
>> be really damaging, and I'm not sure what would be gained.
>>
>> I can imagine use cases where getting a new instance each time would be 
>> useful.
> But that is under the full controll of the __call__ of the utility, it 
> could return whatever
> it wants, as long as what it returns implements the requested interface 
> of course (
> imagine a pool of utilities implementing the interface, some being "busy")

I wouldn't want to force everyone to implement

def __call__(self):
     return self

Since this is the most common (and current) use case. And ignoring BBB 
is not an option. :)

Nor would I want some separation of factory and object where everyone 
had to implement both.

> If you'd like to check (as a user of the ZCA) if you got a singleton for 
> a utility,
> then compare the lookup() against the utility returned, e.g. __call__ 
> returned  self.

You wouldn't.

> The distinction between utility and adapter only burdens  the ZCA with  
> no gain. The
> only reason for ZCA to know about it today is to decide if to return the 
> registered
> object or to call it. And a lot of discussion is necessary to explain 
> the difference.

I disagree. I think it may burden the internal implementation of the 
ZCA. I don't think it that's the correct perspective, though. I think 
that logically, these are two different concepts that meet two different 
sets of use cases. I think there'd be *more* documentation required to 
explain how one super-general concept stretches to a dozen different use 
cases, than to explain how two concepts stretch to half a dozen each in 
two broad categories.

See my reply to Martijn for more detail.

Martin

-- 
Author of `Professional Plone Development`, a book for developers who
want to work with Plone. See http://martinaspeli.net/plone-book



More information about the Zope-Dev mailing list