Design Patterns: Elements of Reusable Object-Oriented Software – GOOD What stands out about this unbranded textbook is how well it explains difficult topics.