Something along the way of scene-graph. Will the google-fu be with you.
Doing something this way is of course a good thing at first. It's better to have a collection of things which know how to render themselves instead one instance which knows how to render any kind of thing.
On the other hand this way isn't that good when trying to optimize for the way how OpenGL works. In OpenGL you always want to batch things together which are rendered in the same way.
So my idea of a perfect rendering strategy is to sort all things which are rendered so they can be divided automaticly into batches.
Yeah, yeah. I extend my Displayable class whenever I need to optimize a type of rendering. For instance, since I'm coding in pure LWJGL, I need to make my own TiledMap class. I made a Displayable class for rendering tiles in a matrix, since it wouldn't be feasible to add a bunch of display objects to a container with a backing array. My TiledMap is in the the Displayable family, and is composed of Renerable tiles. It stores them in a matrix so that offscreen optimizations can be made. I only get so far with what you call a Screen-Graph. I make particular Displayable objects when optimizations need to be made. Thanks for the terminology, friend!