Good object-oriented design firmly relies on abstract classes. They define the interface to work with subclasses that implement them. If clients directly name these subclasses, they become dependent on them. System evolution is hindered. This paper presents patterns that let developers encapsulate class trees behind their root classes. Clients use class specifications to retrieve classes and create objects. Classes can be removed and plugged into the class tree more easily. Thus, encapsulating class trees eases system evolution and configuration of system variants.
Dirk Riehle. "Patterns for Encapsulating Class Trees." In Pattern Languages of Program Design 2. Edited by John M. Vlissides, James O. Coplien and Norman L. Kerth. Reading, Massachusetts: Addison-Wesley, 1996. Chapter 6, page 87-104.
An earlier version appeared as: Dirk Riehle. "Patterns for Encapsulating Class Trees." PLoP '95, preliminary conference proceedings. University of Illinois at Urbana-Champaign, 1995. Paper 3-2.
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.