[Zope-dev] improving the utility and adapter lookup APIs
Tres Seaver
tseaver at palladion.com
Wed Nov 25 13:34:31 EST 2009
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Gary Poster wrote:
> On Nov 25, 2009, at 11:17 AM, Thomas Lotze wrote:
>
>> Martijn Faassen wrote:
>>
>>> Adapter:
>>>
>>> IFoo(x)
>> [...]
>>
>>> Multiadapter:
>>>
>>> IFoo.multi(x, y)
>> [...]
>>
>>> Utility:
>>>
>>> IFoo.utility()
>>>
>>> [or possibly IFoo() instead?]
>> What about a simple and consistent API for all components including
>> utilities, adapters and multiadapters:
>>
>> IFoo()
>> IFoo(x)
>> IFoo(x, y)
You can't use an arbitrary number of positional arguments for the
contexts, because we need to support the named / default cases too.
>> I seem to remember there had been some discussion at some point about
>> dropping or at least loosening the distinction between utilities and
>> adapters anyway, so this would be the opportunity to do so at the API
>> level.
>
> That was discussed and rejected near the very beginning of the Z3
> effort, in my memory. They are too different. Our use of adapters
> generally involves looking something up and automatically calling it.
> Our use of utilities generally involves simply looking something up
> and returning it.
It doesn't matter *to the caller* how the adapter / utility lookup
works, which is why making the spelling regular for the caller is a good
idea. The caller doesn't know any different in the zope.component API:
getUtility(IFoo)
getAdapter(context, IFoo)
They are both lookups, from the caller's perspective. Why should the
caller care that the adapter lookup finds a factory and calls it, while
the utility lookup (typically) finds a global singleton?
Tres.
- --
===================================================================
Tres Seaver +1 540-429-0999 tseaver at palladion.com
Palladion Software "Excellence by Design" http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAksNeLcACgkQ+gerLs4ltQ6F9gCfXooovAG8fAKZtxL06++hPP/9
8H4AoITGogG8Mv4rg2M/FR1cyyOUZwFk
=b2h1
-----END PGP SIGNATURE-----
More information about the Zope-Dev
mailing list