public AbstractProduct BuildProduct() { // here we can decide the order of builder inside director var product = new Product(); product.SetPartA(builder.BuildPartA()); product.SetPartB(builder.BuildPartB()); product.SetPartC(builder.BuildPartC()); return(product); }