The Bureaucracy pattern is a recurring design theme used to
implement hierarchical object structures which allow interaction
with every level of the hierarchy and maintain their inner consistency
themselves. It is a composite pattern which is based on the Composite,
Mediator, Chain of Responsibility and Observer pattern. Composite
patterns require new presentation and modeling techniques since
their complexity makes them more difficult to approach than non-composite
patterns. In this paper, I use role diagrams to present the Bureaucracy
pattern and to explore its design and implementation space. Role
diagrams have proved to be very useful to get a grip on this complex
pattern, and I hope it will work well for design patterns in general.
Dirk Riehle. "Bureaucracy." In Pattern Languages of Program Design 3. Edited by Robert Martin, Dirk Riehle, and Frank Buschmann. Reading, Massachusetts: Addison-Wesley, 1998. Chapter 11, page 163-186.
An earlier version appeared as: Dirk Riehle. "Bureaucracy--A Composite Pattern." EuroPLoP '96, preliminary conference proceedings. Kloster Irsee, 87660 Irsee, Germany, 1996. Paper 16, 11 pages.
The paper is available as a PDF file. Please note that the final published article is a copy-edited version of this pdf file and therefore may differ in minor details from the version provided here.
The C++ sample code from the pattern is available as bureaucracy.tar.gz or bureaucracy.zip. No warranties, use at your own risk.