Observer Pattern OO design implemented in Java