How would I handle rendering each child element differently?

I want to create a few different mini layouts for a blog type setup.
For instance I want to have 3 different page types (not sure if that’s
the right term in radianese) that I want to encapsulate : photo, text,
and link. If the entry is a photo, use a certain snippet to render
display the content. Photo, use another. Making a layout doesn’t seem
to make sense as that’s too large of a scale for what I want to
change. Can you define custom page types? And if so, would that fit
what I’m trying to do? It doesn’t seem to fit considering what the
Archive page type does, but I thought I would ask anyway.