My implementation of 23 design pattern using C++