Umm ... ninguna de las cosas que la gente ha mencionado son patrones de diseño.
GOF se escribió implícitamente con Java en mente. Exploró ese espacio bastante bien.Sin embargo, una vez que ingresas en otros idiomas, algunos patrones ya no son necesarios (el observador rara vez se usa en un lenguaje como C# que admite eventos) y surgen algunos nuevos. Tómese los libros Pro JavaScript Design Patterns o Design Patterns In Ruby y vea qué pasa con los patrones de espera en estos paradigmas muy diferentes.
Mis favoritos últimamente provienen de la deriva funcional de los idiomas modernos. Soy un gran admirador de nested closures y de las formas funcionales de abordar algunos de los mismos problemas que GoF (de nuevo, vea el libro de Ruby para ver ejemplos). También estoy enamorado de la idea de domain-specific languages interno que se abre a toda una serie de patrones de diseño propios (incluidos los cierres anidados). Además, la agregación de eventos parece estar a punto de alcanzar un gran éxito en el mundo de .Net en el futuro cercano.
Un par de otros grandes que han llegado a la escena pero que no se discuten tanto en GoF, probablemente porque son más altos que los que estaban buscando, son Inversión de contenedores de control, Message Bussing, Orientación de aspecto -Programación, Model-View-Controller, Model-View-Presenter, Model-View-ViewModel, y su tipo.
Por cierto, estos no son patrones de diseño, pero si está buscando avanzar más allá de TDD, comience a analizar el Desarrollo basado en el comportamiento y el Contexto/Especificación.
Una vez más, quiero señalar que esos no son realmente patrones de diseño, son patrones de arquitectura. Similar, pero mucho más alto nivel. –