For learning design patterns in java