```
+----------------+
+--------------------+ | B ehaviour |
| ctor for structure | | D riven |
| Load for data | | D evelopment |
+--------------------+ | G iven |
| W hen |
+---------------------+ | T hen |
| prefer aggregation¹ | +----------------+
| to inheritance² |
| | +-----+ +--------------+
| ¹"has a" ²"is a" | | DRY | | defensive |
+---------------------+ +-----+ | programming |
+--------------+
+------------------------+
| S ingle responsibility | +-----------------------------+
| O pen closed | | Encapsulation Polymorphism |
| L iskov substitution | | \ / |
| I nterface segregation | | +-----+ |
| D ependency inversion | | | OOP | |
+------------------------+ | +-----+ |
| / \ |
+-------------+ | Inheritance Abstraction |
| new is glue | +-----------------------------+
+-------------+
```