Some of the Java libraries I have used so far seem to have a Factory for seemingly every other class in the library. Apache's FTP Server project, for example, provides a
UserManagerFactory class which allows for configuring a prototypical instance of the
UserManager class and creating copies of said instance - at least I assume / observe this behaviour. However, wouldn't the Builder or Prototype pattern be more suitable for this use-case? I have read the design patterns book by the GoF and I am pretty sure you use factories if you need to switch between families of related class hierarchies (possibly at runtime).
In projects that do not focus on Java exclusively, such as Google APIs, I see a lot more builder classes and I was wondering whether there was any correlation.
The question arising from my observations is: Do I confuse those patterns, do I not fully understand the libraries' class structure or is the naming in certain libraries really off at times?