A very cool site that's cataloged various design patterns in software design. Most of them are a bit challenging for me to understand, but they seem very helpful to wrap head around or when interfacing with developers & engineers.
Breaks them down into three types:
- Creational: provide various object creation mechanisms, which increase flexibility and reuse of existing code
- Structural: explain how to assemble objects and classes into larger structures while keeping these structures flexible and efficient
- Behavioral: concerned with algorithms and the assignment of responsibilities between objects