An implementation of all design patterns in the GOF Book in C++, Java, Python and Ruby