
Ruby is a dynamic language which supports many ways to organize logic. We can use class inheritance or/and compose our classes by including selected modules (mixins). We can define or undefine methods on the fly. We can even use methods that aren’t really defined (using method_missing).
Another powerful feature is its ability to extend object with new methods in run-time by including modules to its class or its singleton class (if he/she wants to extend only the one object).
To present this design pattern, lets assume that we want to create an application which will entertain our users — an RPG game, where the plot takes place in a fantasy world.
