GoF design pattern sample implementations in Java