Like this article? We recommend
Object-Oriented (OO) Design
Good OO design skills are more or less essential for delivering Java applications. At a minimum, developers should be familiar with the UML, design patterns, and refactoring.