Learn design patterns by stories, the codes come from http://www.programcreek.com/java-design-patterns-in-stories/