Design patterns have proven to be very useful for the design of object-oriented systems. The power of design patterns stems from their ability to provide generic solutions to reappearing problems that can be specialised for particular situations. The implementation of design patterns, however, has received only little attention and we have identified four problems associated with the implementation of design patterns using conventional object-oriented languages. First, the traceability of a design pattern in the implementation is often insufficient; often the design pattern is ‘lost’. Second, since several patterns require an object to forward messages to other objects to increase flexibility, the self problem often occurs. Thirdly, since the pattern implementation is mixed with the domain class, the reusability of pattern implementations is often limited. Finally, implementing design patterns may present significant implementation overhead for the software engineer. Often, a,...