Design pattern interpretation - GoF 23 design pattern analysis c++ implementation