Individual Design Patterns provide the vocabulary of a software design Pattern Language. Refactoring provides a way of moving around in design space. This book brings these two ideas together: how to compose small refactoring steps into big leaps, in sensible directions (to patterns, or even away from patterns if necessary).
Written in the same clear style as Design Patterns and Refactoring, this provides a lot of specific refactorings, a lot of good advice, and enough motivation and background to allow one to cast one's own ideas into this code development style. Recommended.