Josh Bloch's Effective Java popularized the Builder Pattern as a more palatable way of constructing objects than constructors or factory methods when there are potentially many constructor parameters. The formulation in Effective Java makes for a particularly readable construction, like this: new Rectangle.Builder().height(250).width(300).color(PINK).build(); The advantage over a constructor invoc