Builder

The Builder pattern decouples construction of an object from its underlying structure so that one builder can create multiple types of objects.