[Seaside] Smalltalk design advice -
howtoimplement genericbi-directional pointers?
aaron at cocoanutstech.com
Sun Dec 23 21:23:04 UTC 2007
Hi Sebastian. You just turned my world on its head :-)
On Dec 23, 2007, at 3:43 PM, Sebastian Sastre wrote:
> Almost allways objects should not know about "their parents". But
> often want to know what is going on with it's children even when the
> children do not pass a message "directly" (hard coupling).
And I just read part of Ramon's blog that says the same kind of thing
but with the specific example of Seaside components and the
This is great, you both make valid arguments. While I understand what
you say my past still haunts me so I popped open the system browser
to examine "WAComponent" which is the general Seaside page component.
It's just as you say. There is a "WAComponent>>children" message and
a "WAComponent>>parent" message is AWOL.
"How can this be?" was my first guttural reaction.
You see, I'm a WebObjects weenie. "WOComponent" is to WebObjects what
"WAComponent" is to Seaside. In a "WOComponent" you have
"WOComponent.parent()" but you do not have "WOComponent.children()".
It's the exact opposite of what you are recommending and what Seaside
is doing. Combing through the cob webs of my recollection, I remember
struggling with this notion years ago. I naively thought that both
relationships should exist because there were times when I really
wanted at the children of a particular component. And you know, if
you dig into Apple's java code, you'll realize that they do have a
hidden concept of children for a particular component, but they don't
expose it in the public API. You kind of have to know your children
when you are asked to generate the HTML response string and you want
to give your "children" components a chance to "speak".
So, after I peel back the layers of the onion, I see that Apple
consciously decided components should only know their parent. Yet,
behind the scenes, they secretly have a way to get to the children.
Kind of bizarre, I wish I knew what their design decision was but I
don't. I had always just assumed there was a "very good reason" for
modeling components the way Apple did, but maybe, in light of what
you are telling me, there isn't one.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the seaside