Programmers make hundreds of decisions a day. Occasionally they make large-scale decisions like those covered by Design Patterns. Far more frequently they make small-scale decisions--choosing names, organizing code logically, dividing programs into coherent parts. The cumulative effect of these hour-by-hour, minute-by-minute decisions is as significant as the effect of the design decisions in making code clear, flexible, and robust. This book is a catalog of the frequent decisions programmers make and the approaches to these decisions that result in code that communicates clearly. Programmers applying Implementation Patterns achieve code that is consistent, easy to read, and easy to modify. It sets out the "bag of tricks" common to excellent programmers in Java and similar languages. Implementation Patterns will appeal to programmers wishing to improve their individual practice, teams finding a common style, and language designers looking for abstractions to add to the next generation of programming languages. The days development teams are bigger, more spread out, and frequently forced to work with legacy applications. Now more than ever clear, communicative code is essential.