@masterpuppet
Bastante claro el ejemplo, está perfecta la separación.
@drieran
El ejemplo que te he puesto si quieres manejar otro tipo de medios persistentes como archivos de texto o xml´s como lo ha mostrado masterpuppet sólo hay que agregar una nueva capa de abstracción, tendrías entonces esa capa para acceder a los distintos medios (txt, xml, base de datos) y la parte de base de datos dependería de otra capa de abstracción para conectarte a los diferentes manejadores (Mysql, Firebird, etc...).
Muy buen tema.
Un saludo y suerte !