write blog about decorator pattern