Implementations of OO design patterns in C++