All decorations are created through this factory interface. This
allows the user to change the global factory object in order
to display different decorations. It would even be possible
to create 'proxy' decorations and change the decorations
during runtime.