1Erich Gamma et al., Design Patterns, Addison-Wesley, 1995.)