Separate the construction on a complex object from its representation so that the same construction process can create different representations
Prototype
Builder
Template method
Momento