I think that this is a really interesting question. As has been pointed out there are many good references on useful design patterns, OO principles and other techniques.
I've not yet seen resources that allow someone to exercise the application of these techniques. As someone with a background in education I've thought about this kind of resources and my conclusion is that developing useful resoruces is extremely demanding. It's not that hard to come up with little questions that "bake" an answer (eg. devise a problem that might be addressed by using an Abstract Factory) but those are trivial problems, the real art comes when the systems are bigger and there are trade-offs to be considered; where there may more than one "right" answer.
I can imagine that high quality formal course might contain such material, but finding something free? If we can find some that would be really nice.
I suspect that at present you may need to rely on mentoring, learnng on the job, and lengthy experience.
Perhaps one thing to try: Buoild your own material! For example, take a non-trivial problem in a Domain with which you are familiar and try to devise a solution. As you progress post questions about small pieces of design here (or perhaps a more discursive site). Going to be tricky to keep the questions small and foscused. But I think the major thing you need is feedback and collaboration.