add head_first_design_pattern java code