New way to learn MVC. View a sing-song

Email.Email weblog link
Blog this.Blog this
Dion Almaer

Dion Almaer
Jul. 17, 2003 01:44 PM

Atom feed for this author. RSS 1.0 feed for this author. RSS 2.0 feed for this author.

We have a new way to learn about MVC... and maybe watch a song go to #1 :)

Apple Operations Engineer, James Dempsey, wrote and performed a funny and educational MVC song at this year's WWDC.

Download the song here

Model, View, Controller
Lyrics and music by James Dempsey.

Model View, Model View, Model View Controller
MVC's the paradigm for factoring your code,
into functional segments so your brain does not explode.
To achieve reusability you gotta keep those boundaries clean, 
Model on the one side, View on the other, the Controller's in between.

Model View  It's got three layers like Oreos do.
Model View creamy Controller

Model objects represent your applications raison d'tre.
Custom classes that contain data logic and et cetra.
You create custom classes in your app's problem domain,
then you can choose to reuse them with all the views,
but the model objects stay the same.

You can model a throttle in a manifold,
Model level two year old.
Model a bottle of fine Chardonnay.
Model all the twaddle stuff people say.
Model the coddle in a boiling eggs.
Model the waddle in Hexley's legs.

One, two, three, four.
Model View  You can model all the models that pose for GQ.
Model View Controller

View objects tend to be controls that view and edit,
Cocoa's got a lot of those, well written to its credit.
Take an NSTextView, hand it any old Unicode string,
the user interacts with it, it can hold most anything.
But the view don't knows about the Model:
That string could be a phone number or the words of Aristotle.
Keep the coupling loose and so achieve a massive level of reuse.

Model View  All rendered very nicely in Aqua blue
Model View Controller

You're probably wondering now.
You're probably wondering how,
the data flows between Model and View.
The Controller has to mediate,
between each layer's changing state,
to synchronize the data of the two.
It pulls and pushes every changed value.

Model View  mad props to the smalltalk crew!
for Model View Controller

Model View  it's pronouced Oh Oh not Uh Uh
Model View Controller

There's a bit more on this story, 
a few more miles upon this road,
well nobody seems to get much glory 
writing controller code.
Well the model is mission critical 
and gorgeous is the view,
But I'm not being lazy, but sometimes it's just crazy 
how much code i write is just glue.
And it wouldn't be so tragic,
but the code ain't doing magic:
it's just moving values through.
And I wish I had a dime
for every single time 
I set a TextField's stringValue.

Model View  how we're gonna deepsix all that glue
Model View Controller

Controller's know the Model and View very
uahh  intimately 
They often are hardcoding 
which is very verboten for reusability.
But now you can connect any value you select
to any view property.
And I think you'll start binding,
then you'll be finding less code in your source tree.
Yeah I know I was astounded,
that's not even a rhyme.

But I think it bares repeating
all the code you won't be needing,
when you hook it up in IB.

Model View  it even handles multiple selections too
Model View Controller

Model View  hope I get my G5 before you
Model View Controller

Yeah, yeah, yeah. Yeah.

Dion Almaer is a Principal Technologist for The Middleware Company, and Chief Architect of TheServerSide.Com J2EE Community.