Ts Builder Pattern

// The Builder pattern is a design pattern lets you construct complex 
// objects step by step and it's used mainly in the object oriented 
// programming paradigm.

// And you can implement the Builder pattern in Typescript is 
// very easy and you can use the builder module.

class Builder {
  public build() {
    return new Product();
  }
}

// Then you make a product class :
class Product {
  constructor(private partA: string, private partB: string) {}
}

// Then you make a director class to build the builder:
class Director {
  public build(builder: Builder) {
    builder.buildPartA();
    builder.buildPartB();
  }
}

// Then you make a ConcreteBuilder that implements the Builder interface:
class ConcreteBuilder extends Builder {
  private product: Product;

  public buildPartA() {
    this.product.partA = 'Part A';
  }

  public buildPartB() {
    this.product.partB = 'Part B';
  }

  public getProduct() {
    const product = this.product;
    this.reset();
    return product;
  }

  public reset() {
    this.product = new Product('', '');
  }
}
const builder = new ConcreteBuilder();
const director = new Director();
director.build(builder);
// make a new product
const product = new Product('Part A', 'Part B');
// get the product
const newProduct = builder.getProduct();
Puzzled Puffin