¿Cuándo usar qué patrón de diseño? [cerrado]

104

Me gustan mucho los patrones de diseño, pero me resulta difícil ver cuándo puedo aplicar uno. He leído muchos sitios web donde se explican los patrones de diseño. Entiendo la mayoría de ellos, pero me resulta difícil reconocer un patrón en mis propias situaciones.

Entonces, es por eso que hago esta pregunta. ¿Existen pautas / campanas de alarma sobre cuándo usar qué patrón de diseño?

Por ejemplo, si está haciendo una instrucción de cambio para determinar qué objeto necesita crear, probablemente quiera usar el patrón de diseño de fábrica. Entonces, la declaración de cambio en este caso es una 'campana de alarma' para usar el patrón de fábrica.

Entonces, ¿conoce más 'campanas de alarma' para determinar un patrón de diseño?

Martijn
fuente
6
Por lo general, las descripciones de patrones que veo incluyen una descripción de las situaciones en las que le gustaría ese patrón de diseño.
R. Martinho Fernandes

Respuestas:

99

Por lo general, el proceso es al revés. No busque situaciones en las que utilizar patrones de diseño, busque código que se pueda optimizar. Cuando tienes un código que crees que no está estructurado correctamente. trate de encontrar un patrón de diseño que resuelva el problema.

Los patrones de diseño están destinados a ayudarlo a resolver problemas estructurales, no vaya a diseñar su aplicación solo para poder usar patrones de diseño.

Joep Killaars
fuente
23
No solo problemas estructurales, sino también de comportamiento y de creación.
DevDemon
1
Los patrones de diseño pueden acelerar el proceso de desarrollo al proporcionar paradigmas de desarrollo probados y comprobados. El diseño de software eficaz requiere considerar problemas que pueden no ser visibles hasta más adelante en la implementación. La reutilización de patrones de diseño ayuda a prevenir problemas sutiles que pueden causar problemas importantes y mejora la legibilidad del código para codificadores y arquitectos familiarizados con los patrones.
SaddamBinSyed
5

Aprendalos y poco a poco podrá reconocerlos y averiguar cuándo usarlos. Comience con algo simple como el patrón singleton :)

si desea crear una instancia de un objeto y solo UNA. Usas el patrón singleton. Digamos que está creando un programa con un objeto de opciones. No quieres varios de esos, eso sería una tontería. Singleton se asegura de que nunca haya más de uno. El patrón singleton es simple, se usa mucho y es realmente efectivo.

Peter Rasmussen
fuente
17
El singleton no es realmente para cuando solo necesita una instancia. Singleton es para cuando necesita limitarse a una instancia. Cuando necesite solo una instancia, puede intentar simplemente crear solo una instancia y usarla.
R. Martinho Fernandes
Además, aunque el singleton es muy útil y necesario en algunos lugares, también es un patrón muy fácil de implementar cuando no es necesario. Como insinúa aquí, y como señaló Fernandes, probablemente no lo necesite. De hecho, el uso de un patrón singleton es una buena señal de posibles (probablemente) olores de código. Usarlo para una clase de servicio es más que probable un olor a código. Parece que necesitas DI, no singleton. Algunas personas los usan de esa manera. Especialmente para códigos pequeños (sin importancia) o POC. Pero como dije, hay algunos usos efectivos. No encuentre una manera fácil de hacer algo y simplemente hágalo.
Suamere
4

Estoy completamente de acuerdo con @Peter Rasmussen.

Los patrones de diseño proporcionan una solución general a los problemas de diseño que ocurren comúnmente.

Me gustaría que siguiera el siguiente enfoque.

  1. Comprender la intención de cada patrón
  2. Comprender la lista de verificación o el caso de uso de cada patrón
  3. Piense en la solución a su problema y verifique si su solución cae en la lista de verificación de un patrón particular
  4. Si no es así, simplemente ignore los patrones de diseño y escriba su propia solución.

Enlaces útiles:

Sourcemaking : explica la intención , la estructura y la lista de verificación maravillosamente en varios lenguajes, incluidos C ++ y Java

wikipedia : explica la estructura, el diagrama UML y ejemplos de trabajo en varios lenguajes, incluidos C # y Java.

La lista de verificación y las reglas generales en cada patrón de diseño de creación de fuentes proporciona todo lo que está buscando.

Ravindra babu
fuente