Content area
A collection of design patterns was described by Gamma, Helm, Johnson, and Vlissides in 1994. Each pattern ensures that a certain system aspect can vary over time, for example the operations that can be applied to an object or the algorithm of a method. The patterns are described by constructs such as the inheritance and reference relations, attempting to emulate more dynamic relationships. As a result, the design patterns demonstrate how awkward it is to program natural concepts of evolution when using a traditional object-oriented language. A new relation between classes - the context relation - is presented. It directly models dynamic evolution, and it is meaningful at both the design and implementation level. At the design level, the Unified Modeling Language is extended to include the context relation as a new form of arrow between classes. At the implementation level, a small extension of Java is presented. The context relation introduces a new form of dynamic binding that serves as a replacement to delegation. It is demonstrated how the context relation can be used to easily model and program numerous design patterns.