Object-oriented design patterns (Gang of Four [GoF], Dependency Injection, Active Record, Data Mapper, Null Object etc.)
Designing object-oriented software is hard, designing reusable object-oriented software is even harder. - Design Patterns: Elements of Reusable Object-Oriented Software, GoF, 1994
It is difficult to appreciate the value of a design pattern without seeing the code before and after the use of a design pattern. - Erich Gama, GoF, 2009