Java interfaces explained
One thing they do quite well is hide the implementation from the calling classes. Why is that good? Well, when you want to change the implementation you don’t have to change the calling classes.. Saves time, saves work, saves QA resources, code is more readable, more versatile and easier to maintain.
I’d seen this explained before but the example Kasia provides finally made it click for me. Kasia also provides a link to Design Techniques, a collection of articles on good Java design. I just wish I’d found these before I started on our (now handed in) Java coursework.