Design patterns : - Gamma, Erich (Addison-Wesley professional computing series, 1995)