Head First Design Pattern in JAVA