// Maybe don't validate the builder type in the construction functions? // Should be the responsibility of the caller to provide the right builder? public void ValidateOrder(Order order) { builder.ResetBuilder(); builder.SetOrder(order); builder.ValidatePet(); builder.ValidateUser(); builder.ValidatePayment(); builder.ValidateProducts(); builder.ValidateServices(); }