GOF design patterns in Ruby