Objective: Learn Builder Design Pattern. What is Builder Design Pattern? It is a creational design pattern. Seperates the construction of a complex object from its representation so that the same construction process can create different representations. Pattern used to create objects that are made from a bunch of other objects. When to use the Builder Design Patter? - the algorithm for creating a complex object should be independent of the parts that make up the object and how they're assembled. - the construction process must allow different representation for the object that's constructed. Why do we use Builder Design Pattern? - Lets you vary a product's internal representation. The interface lets the builder hide the representation and internal structure of the product. Also hides how the product is assembled. - Isolates code for construction and representation. Improves modularity by encapsulating the way a complex object is constructed and represented. - Gives finer control over the construction process. Builder pattern constructs the product step by step under the director's control. Only when the product is finished does the director retrieve it from the builder. Provide an example of Builder Design Pattern. It might have been taught differently in lecture, follow that if the examples conflict. But here is another example of the design patter: https://github.com/bhowmikp/design-patterns/tree/master/creational_patterns/builder