Ironically, none of them contain the word Java in their titles. Once you are familiar with the patterns cataloged in Design Patterns, learn how some of them evolved. Refactoring To err is human. If that is true, I've seen hundreds of programs that are more human than I. Projects go wrong. Mistakes are made.
Schedules slip, and quality is sacrificed.
Those make up the caveats of our profession. That is the most extreme solution, one that is sure to infuriate your boss. But don't despair because there are alternatives. Refactoring is the process of improving performance by reorganizing a program's internal structure without altering external behavior. Refactoring could make a method run faster or provide more accurate results without changing the method's signature.