Java design patterns: a tutorial · Study