I just want to inject some design patterns into my Java code, but I don’t know which style to use — is inheritance or interface preferred? And why?
Share
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Design patterns aren’t a thing to just randomly inject into your application. They’re design-time sorts of things, not parmesan cheese that you sprinkle on your code after it’s already baked.
That said, Josh Bloch’s seminal Effective Java strongly encourages developers to use interfaces for shared behavior rather than using inheritance. This matches my own experience.
ETA: Among other reasons, if you’re implementing an interface, you can easily create a mock of that interface for use in testing without worrying about the rest of the inheritance hierarchy.