i would say theres no right or wrong way. try to gather all your types of shaders your going to have as well as a list of what objects will use which then try to write as generic a manager which works for all these. then if you need additional functionality just extend this manager.
dunno if that helps. just the way i would do it.