java-design-patterns-sample