[Zope-dev] implementing zope.component 4.0
Charlie Clark
charlie.clark at clark-consulting.eu
Sat Nov 28 11:35:01 EST 2009
Am 28.11.2009, 16:55 Uhr, schrieb Lennart Regebro <regebro at gmail.com>:
> That's what adapters are. They aren't reduced to it, it's what they
> do. They adapt one object with one interface to have another
> interface. That can indeed be seen as a type conversion.
I agree that that is probably the most common use for them.
>> Thanks for the comparison but it is semantically so different and
>> interfaces can be used for things other than adapters that I disagree.
> Yes but adapters can only be used as adapters, and the topic was the
> syntax for adapting an object.
My point is you can't necessarily tell much from the interface name.
>> The
>> most common example I know of the syntax is with INameChooser() which
>> brings us back to the differences (real or imaginary) between utilities
>> and adapters.
> I agree that calling an interface like that is a strange thing to do.
> I don't know what that would do, even. I have however never ever seen
> that done.
It's utility for avoid name conflicts when adding a new object to a
container:
from zope.container.interfaces import INameChooser
name = INameChooser(container).chooseName(obj.getId(), obj)
>> It's quite likely that I'm wrong in this but I see great potential using
>> adapters for delegation rather than straight conversion.
> But the delegation is adaptation. There is no difference.
For me, conceptually, there is quite a difference. An adapter is closely
coupled to the object it is adapting. The common example is the headphone
jack - electric impulses in and out. Delegation, at least the way I think
of it, places the emphasis on separating the functionality, ie.
decoupling, of the adapter from the object being adapted, even though
technically it's exactly the same. I think of adapters as the gadgets that
James Bond gets given by "Q" - it helps me get away from thinking about
implementation.
>> I have very much
>> come to appreciate the power of this delegation in, say, BrowserViews;
>> even if it did take me several months to understand the multiadapter
>> pattern!
> I hear this a lot, so this is apparently something that is common to
> take a while to grasp. Any ideas of what to make multi-adapters more
> understandable would probably be a good thing.
hm, good question. With BrowserViews I think the problem is possibly with
the whole idea of the REQUEST object which it's easy to oversee and just
treat like a dictionary or storage. I normally concentrate on emphasising
that the view has been delegated presentational responsibility by the
content object in a particular context (maybe it is easier to understand
adapting the content object and the request for a piece of HTML or PDF,
etc.). Would it be too far fetched to imagine an engine adapting a car and
petrol to provide motion?
Charlie
--
Charlie Clark
Managing Director
Clark Consulting & Research
German Office
Helmholtzstr. 20
Düsseldorf
D- 40215
Tel: +49-211-600-3657
Mobile: +49-178-782-6226
More information about the Zope-Dev
mailing list