I am currently working on a project that is using an active object model (also known as adaptive/dynamic object model) in its architecture. An active object model provides runtime extensibility of the object model. The core domain object model can be very generic and a declarative approach can be used to define specific domain object types. Essentially you can define new types without making any programming changes.
The Active Object Model web site provides plenty of information on the subject. Ralph Johnson’s paper on The Dynamic Object Model Architecture provides a solid introduction covering a number of common design patterns (i.e..type-squared and type-cubed) used for developing such a model. Developing these architectures can be more challenging but they can add longevity and flexibility to your object model.
Adaptive object models are commonly used in medical applications and the folks at OpenEHR are doing some great work both on the specification and implementation fronts. On the standards side they have released the Archetype Definition Language (ADL), which defines a mechanism for declaring archetypes based on a reference information model. There have also released an ADL Parser and a reference implementation both in Java. Although parts of the implementation are specific to the Electronic Health Record industry it is still useful for other applications.
I don’t believe that the ADL specification will be widely adopted outside the EHR domain (could be wrong of course) and a specification based on more widely used specifications, such as OWL/RDF, may have been a better approach. The article, Mapping Archetypes to OWL, describes an approach for mapping ADL constructs to equivalent OWL constructs. Currently, I don’t have the background to understand how far we can go with OWL and tools like Jena but will look in to it when I have some spare cycles.