* add behavioral design pattern : visitor
* add creational design pattern : decorator