This book is excellent. Have you ever found yourself working on a project where the source code was terribly written? This author explains to you how to refactor source code into the gang of 4 design patterns. He explains situations such as tons of nested if/else/then statements and how to refactor that logic into a design pattern, for example. Another example is how to refactor duplicate source code into a design pattern and which one to use.
Refactoring to Patterns by Joshua Kerievsky
Publisher: Addison-Wesley Professional (August 15, 2004)
This is available on safari books online for previewing and reading: