Design Patterns - Elements of Reusable Object-Oriented Software
Since changing interfaces breaks clients you should consider them as immutable once you've published them.
The best designers will use many design patterns that dovetail and intertwine to produce a greater whole.