Patrones de diseño: elementos de software orientado a objetos reutilizable - Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (Pearson Educación, 2003)