I want to start off by saying that I am no expert and still pretty newbish.
I feel that interfaces seem best used for situations where different classes need different implementations of the same set of methods without needing to cast to the derived class and components are best used for things where the implementation will be the same for different classes.
I would use inheritance in situations where I have want to make another object that is mostly the same but I just want to adjust a couple of things but it really depends.
There is a good free book online that talks about all kinds of patterns that I really liked that might help you.
http://gameprogrammingpatterns.com/contents.html