I'm trying to understand Builder Pattern usages and to separate its usage types into groups. Here is what I discovered:
Builder can be used to provide immutability (avoiding telescoping) for an object it is building. So called Joshua Bloch's builder. So, we use builder to facilitate building an object with a lot of fields.
Builder can build some objects that need to be structured and follow some structure rules. For example XmlBuilder, that builds xml and can fail when wrong data is passed (e.g. not closing a tag, or so on). In this case builder validates inner object on each build step.
But what about GoF's builder? With Director, abstract Builder and different implementations... I have never seen such implementation in production. What is the relationship between Bloch's builder and the GoF builder? Are they truly related? What are the differences?