add cpp version decorator pattern
add cpp version simple factory pattern
add cpp version factory method pattern