Pattern languages of program Design 3 - Buschmann, Frank; Martin, Robert; Riehle, Dirk (Addison-Wesley, 1998)