Design Patterns 'GoF' implementation in Java