As I’m doing some writing for the Flex for Dummies book I was digging into the source code for Panel and the other containers. I was writing about how Panel allows you to set the
layout property to either
horizontal, just like LayoutContainer (or Application, which extends LayoutContainer). My initial thought was that Panel probably just extends LayoutContainer and that’s where we get the
layout property from. But then digging in I saw that both LayoutContainer and Panel independently implement the
layout property (in basically a cut and paste exact same way). Unless I’m missing something there’s no reason why Panel shouldn’t just extend LayoutContainer. (BTW, for a recent writeup of the LayoutContainer class see Ben Clinkinbeard’s post here).
If you look at the setter for the
layout property it’s almost identical in both Panel and LayoutContainer. And take a look in
updateDisplayList() and you’ll see the same calls to
So I dunno, just thought it was interesting. Really I’m just procrastinating while I’m supposed to be writing. 😛 OK, back to work…
2 thoughts on “Why doesn’t Panel extend LayoutContainer?”
The response from Flex should be:
“Because we can.”
Inheritance would be easy… but in the end your subclasses would become heavily dependent on the parent implementation. This shouldn’t be a problem as long as you understand the implications and you are fine with it. Deep object hierarchies can and usually do become a problem. Before you say yes to inheritance you should consider composition (which is what they are doing). The duplication buys you improved encapsulation/compartmentalization and can insulate your application from or ease the pains of refactoring when parent implementations change. Just a thought. Peace.
Comments are closed.