The builder pattern lets users construct complex objects step by step. Allows users to produce types and representations of an object using the same construction code

  • Extract the object construction code out of the object's class and into another class.
  • Doesn't allow objects to access the product until it is built
  • Director class defines the order of which steps are executed
  • Builder provides the implementation

Kinda like using setters to set the attributes of an object, and encapsulating that into an object where the result can only be accessed via a public method.