Abstract Factory — Families of Objects That Always Match

Create whole families of related objects without naming a single concrete class, and kill the platform if/else sprawl