A Flexible Model-Driven Game Development Approach
design patterns : elements of reusable object - oriented software .