És un exemple dels patrons strategy, singleton i decorator