Bridge and Flyweight pattern: separating abstraction and sharing state
The Flyweight pattern shares the immutable part of your data across millions of objects to save memory, while Bridge splits two independent axes of variation so the number of classes does not explode...










