¿Alguien puede crear un nuevo patrón de diseño?

En teoría, puedes, pero en realidad, es poco probable que lo hagas. Un patrón de diseño codifica intentos repetidos para construir sistemas similares al notar que algún componente (o un sistema completo) sigue un patrón similar que se encuentra en otros proyectos.

Tomemos el ejemplo de uno de los patrones de diseño a gran escala más utilizados (quizás usados ​​en exceso), identificando lo que lo convierte en un patrón de diseño. El MVC (Modelo-vista-controlador) dice que la forma en que tratamos los datos internamente a menudo no es cómo las personas interactúan con esos datos.

Por ejemplo, esta respuesta se almacena en alguna base de datos (el modelo), donde se representa de una manera radicalmente diferente de la forma en que se muestra al espectador. La pantalla es muy diferente a la forma en que ingresé la respuesta (el controlador).

Dadas las diferencias distintivas en los tres componentes de nivel superior, no tiene sentido tratarlos en un diseño monolítico hecho a medida para Quora. En cambio, debemos trabajar en el aspecto de la base de datos con algo que incluya una API simplificada. Necesitamos algo que el desarrollador pueda usar con velocidad, construyendo fácilmente el visor y el controlador de forma aislada del modelo.

Dado que esto requiere conocimiento y consenso, es muy poco probable que descubra un patrón común subyacente que no sea 1) exclusivo de su proyecto y 2) útil en todos los proyectos bajo una amplia variedad de dominios.

Sí, un patrón de diseño es solo una representación textual de una solución conocida a un problema recurrente, de modo que tanto el problema como la solución son ampliamente conocidos y la solución es ampliamente aceptada como la mejor solución.

El objetivo de un patrón de diseño es que juega bien con otros patrones de diseño.

La mayoría de los patrones de diseño difieren en las decisiones de tiempo de ejecución. La lógica es que en el tiempo de ejecución tiene más información que en el momento de la compilación. El tiempo de ejecución no es importante como la ejecución correcta. Esto es lo contrario de lo que se les dice a la mayoría de los desarrolladores en la escuela.

Aparte de eso, probablemente podría inventar sus propios patrones de diseño sin mucho esfuerzo.

La idea original surgió de un arquitecto en la vida real, hablando de edificios: Christopher Alexander, en A Timeless Way of Building.

Se le ocurrió esta idea de documentar en aproximadamente 500 patrones todo sobre alrededor de 2.000 años de arquitectura occidental.

Los patrones de diseño no se crean, se descubren. El libro original de Patrones de diseño fue una codificación de soluciones de diseño que se encontraron repetidamente en código escrito por ingenieros expertos en software.

Puede encontrar una solución de diseño única, pero hasta que otros programadores comiencen a usarla y luego alguien le dé un nombre, realmente no cuenta como un patrón.

En lo que a mí respecta, crear un nuevo patrón de diseño no es un acto práctico.

Al igual que cualquier otra actividad creativa, escribir, construir, cantar, etc. Cuando aprendes estas cosas, siempre te enseñan algunos trucos comunes, y puedes usar estos trucos como bloques de construcción para construir tu criatura. Estos trucos comunes pueden ser algunos tipos de patrones. Al igual que en el proceso de escritura novedoso, puede dar pistas antes de que ocurran algunas cosas importantes. Los patrones de diseño son solo algunos trucos comunes para el diseño de software.

Por supuesto, podemos inventar nuestros propios trucos, pero antes de que se vuelvan comunes, son solo trucos.

En realidad, no necesitamos prestar mucha atención a los patrones de diseño. Por supuesto, puedes aprenderlos e intentar usarlos. Pero el OOD ha descubierto los principios más comunes: SÓLIDO (diseño orientado a objetos). Se ha demostrado que muchos de los patrones de diseño no son perfectos, incluso podrían traer más problemas a su diseño.

Recomiendo este libro Amazon.com: Desarrollo ágil de software, principios, patrones y prácticas (9780135974445): Robert C. Martin: Libros

Pregunta original respondida: ¿HashMap es un patrón de diseño?

No. Es una estructura de datos. Todo sobre un HashMap se puede expresar en código; hay un código que puede señalar y decir “Esto es lo que es un HashMap”.

Los patrones de diseño no se pueden expresar completamente en código. Claro, puede escribir un singleton, pero no puede señalar un fragmento de código y decir “Esto representa lo que es singleton”.

Esa es la principal diferencia aquí.

HashMap1 no es un patrón de diseño. Es una estructura de datos básica.

El mapa es una estructura de datos que almacena el par “clave-valor” juntos, el usuario puede obtener valor a través de la clave. Pero cómo puede obtener valor a través de la clave es un problema. tantos crearon tantos algoritmos para obtener valor. El algoritmo hash es uno de ellos. que puede obtener valor en (O) ^ 1 vez.

Cómo crear un patrón de costura: