No se necesitan patrones de diseño. En cualquier idioma.
Tiendo a encontrar un montón de código escrito por personas que leen sobre patrones de diseño y luego piensan que deberían usarlos por todas partes. El resultado es que el código real queda enterrado bajo toneladas de interfaces, envoltorios y capas y es bastante difícil de leer. Ese es un enfoque incorrecto para los patrones de diseño.
Existen patrones de diseño para que tenga un repertorio de expresiones idiomáticas útiles a mano cuando se encuentre con un problema. Pero nunca debe aplicar ningún patrón antes de identificar el problema. Keep It Simple Stupid siempre debe ser el principio superior de gobierno.
También ayuda pensar en los patrones de diseño como un concepto para pensar sobre el problema en lugar de un código específico para escribir. Y sobre gran parte de la plantilla como solución alternativa a Java que carece de funciones gratuitas y objetos de función estándar que usa en la mayoría de los otros lenguajes que los tienen (como Python, C #, C ++, etc.).
Podría decir que tengo un patrón de visitante, pero en cualquier idioma con funciones de primera clase, será solo una función que toma una función. En lugar de la clase de fábrica, generalmente solo tengo una función de fábrica. Podría decir que tengo una interfaz, pero solo son un par de métodos marcados con comentarios, porque no habría ninguna otra implementación (por supuesto, en Python una interfaz siempre es solo comentarios, porque es de tipo pato). Todavía hablo del código como el uso del patrón, porque es una forma útil de pensarlo, pero en realidad no escribo todo hasta que realmente lo necesito.
Así que aprende todos los patrones como conceptos . Y olvida las implementaciones específicas. La implementación varía, y debería variar, en el mundo real, incluso solo en Java.