Refactoring by Martin Fowler and Kent Beck. Patterns of Enterprise Application Architecture by Martin Fowler. Domain Driven Design by Eric Evans. Growing Object-Oriented Software, guided by tests by Steve Freeman and Nat Pryce.
Also recommended in this reply