A good reusable framework, pattern or module interface usually is represented by abstract classes. They form an abstract design and leave the implementation to concrete subclasses. The abstract design is instantiated by naming these subclasses. Unfortunately, this exposes implementation details like class names and class tree structures. The paper gives a rationale and a general metaobject protocol design that encapsulates whole class trees. Clients of an abstract design retrieve classes and create objects based on class semantics specifications. Using abstract classes as the only interface enhances information hiding and makes it easier both to evolve a system and to configure system variants.
Dirk Riehle. "How and Why to Encapsulate Class Trees." In Proceedings of the 1995 Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA '95). ACM Press, 1995. Page 251-264.
For the time being, a copy is available as a PDF file.
Copyright (©) 1995 ACM. All rights reserved.