Builders
Much of what we do in writing software involves construction or assembly of some sort or other. It could be building a graphical user interface, constructing a file to be saved on disk, or structuring a response to be sent to another system through a web services request. A lot of coding effort is dedicated to getting the structure of what we are building correct. Web pages need to be structured correctly in order to be displayed in a browser. XML-based files and responses to service requests need to be well-formed or they will cause validation exceptions. Building rich client UIs is an art in itself, with each client framework—such as Swing or SWT—having its own arcane API to work with.
Beyond the complexities of the structures that we build, the pattern of construction and the order of initialization imposed by different APIs bring their own constraints. This alone will often obfuscate the structure of what we are building by burying it deep within boilerplate code. In addition...