In this demo, there are four classes, Decoration, DecorationA, DecorationB, Component
Component is the decorated class.
Decoration is a super class, providing two methods, one is class method for choosing which class is used, the other one is a instance method for decorating.
DecorationA is a children class, overide the superclass method.
DecorationB is the other children class, overide the superclass method.