Hi,<p>Often I see experienced Java developers asking us to develop the system using Interfaces rather than starting with classes. Yes, I do create interfaces, I know whats its usecases are etc. However the term "design your system using interfaces" is somewhat confusing to me. Is it a pattern for designing robust application in Java world? How should one learn it?<p>If so are there any online books / blogs regarding the same?<p>Note: I had already asked the question in Java Subreddit, but I want to get HN community thoughts as well.