Here is a more robust Builder Pattern that enforces the order of construction and guarantees you have a valid object.

Here is a UrlBuilder as an example of how this works.