Domain-driven design patterns: A metadata-based approach
design patterns : elements of reusable object - oriented software .