A lot of design patterns in java