Pattern languages of program design. 2 - Vlissides, John M.; Coplien, James O.; Kerth, Norman L. (Addison-Wesley, 1996)