study decorator pattern