Complex objects are often created by the Builder pattern, where a Builder is an object dedicated to the creation of a single object through multiple methods. E.G. (pseudocode):

```
class PersonBuilder
    PersonBuilder Named(string name)
        this.name = name
        return this

    PersonBuilder Aged(int age)
        this.age = age
        return this

    Person GetPerson()
        return new Person(this.name, this.age)

```

This stateful structure with a fluent interface is common in the builder pattern:

```
myPerson = builder.Named("John").Aged(20).GetPerson();

```

Therefore, **is it wise to create a `PersonBuilderFactory` from which you can create the builder?** Or should you just take a dependency on a `PersonBuilder` and assume that your class will be injected with a new object? The latter approach means that when you have created your `Person` you should probably reset the builder. What is best practice here, and why?