¿Cómo determinar si el patrón de diseño se implementa correctamente?

12

Puedo escalar con éxito todas mis aplicaciones antiguas que no usaban patrones de diseño documentados. Sea cual sea el patrón, no lo sé. En gran medida, solo sentí la necesidad de utilizar conceptos simples de POO.

El concepto de patrones de diseño es complejo y difícil de entender. Cuando se implementa, ¿cómo determinar si la implementación es correcta y si la aplicación posee un acoplamiento suelto real?

    
pregunta RPK 19.07.2012 - 07:50

4 respuestas

2

Para mantener la respuesta concisa, diría que si las siguientes características son visibles en su código, puede estar seguro de que los patrones están en su lugar incluso si no ha realizado esfuerzos deliberados (lo que no es un problema) para lograrlo.

Características deseadas:

  1. Su base de código es comprobable a nivel de unidad
  2. Siempre que esté implementando cualquier solicitud de cambio, está realizando cambios solo en las clases relevantes que están relacionadas en el dominio.
  3. Su base de código no muestra entropía de software .

Si aún sientes curiosidad por identificar y etiquetar tu código con los nombres de patrones reales, te recomendaría que realices las siguientes acciones para hacer rodar la bola.

  1. Invierta la ingeniería de su base de código para generar algunos daigramas UML.
  2. Compare visualmente los diagramas con cualquier referencia lista del material de referencia de patrones.

Esto debería darte una idea justa.

    
respondido por el Sameer Patil 25.07.2012 - 09:39
19

Mencionas los patrones de diseño y el acoplamiento. Estos son conceptos separados, así que los trataré por separado. La única conexión real es que los patrones de diseño tienden a promover el acoplamiento suelto (ya que es un aspecto importante del buen diseño).

Patrones de diseño

El concepto de patrones de diseño es bastante simple: son solo un conjunto de plantillas sobre cómo tratar varios problemas comunes. Hay 2 razones principales por las que son populares:

  1. Están 'probados': se han usado muchas veces y los beneficios / inconvenientes de cada uno son generalmente conocidos, en particular, se conocen problemas sutiles que podrían causar grandes problemas.
  2. Proporcionan un conjunto común de terminología y, por lo tanto, permiten una comunicación más fácil. Si alguien dice que "la clase X desempeña el papel de observador en el patrón de observador", los desarrolladores que están familiarizados con el patrón pueden comprender de inmediato lo que está pasando.

¿Cómo sabes que lo has implementado correctamente? Esa es una trampa difícil. Para la mayoría de los patrones es simple: o lo has mezclado o no. Algunos patrones están menos definidos que otros, por ejemplo, model-view-controller . Los patrones de este tipo se utilizan mejor como pautas generales. Los detalles específicos de cómo implementarlo son menos importantes que la comprensión de las razones por las que existe el patrón y lo que se pretende lograr.

Los patrones de diseño no son "la única manera verdadera". A menudo, tendrá que adaptarlos para sus propósitos específicos o, a veces, simplemente no habrá ningún patrón que se ajuste a los requisitos. Forzar un patrón de diseño donde no encaja es una mala idea; Es como usar un martillo realmente bueno cuando lo que realmente quieres es un destornillador.

Acoplamiento

Esta es una idea muy importante en informática. Dado que los requisitos para la mayoría de los proyectos de software cambian con el tiempo (a veces de manera significativa), entonces la capacidad de un diseño para enfrentar los cambios es importante. El acoplamiento es básicamente la medida de "¿qué tan difícil sería cambiar este componente por otro?" El 'componente' podría ser un método, clase, paquete, biblioteca, etc.

Hay varios tipos de acoplamiento listados en este artículo de Wikipedia .

    
respondido por el vaughandroid 19.07.2012 - 10:44
2

La respuesta es en realidad el propósito con el que desea escribir patrones de diseño desde el principio. ¿Para qué quieres flexibilidad?

Eso es cambio; Los requisitos cambian. Intente cambiar algo en sus requisitos que se refleje en el cambio de código y vea qué tan fácil / difícil es hacerlo.

    
respondido por el m3th0dman 19.07.2012 - 09:49
-1

Usar patrones de diseño es una acción preventiva. Usted usa paterns de diseño para facilitar su trabajo cuando está escalando la aplicación más adelante. Por supuesto, para facilitar su trabajo más adelante, debe hacer un poco más de trabajo ahora. así que la pregunta real es cuánto cambio puede esperar en el futuro y qué es este cambio. Si no necesita escalabilidad y flexibilidad, puede eliminar los patrones de diseño.

Los patrones de diseño son en sí mismos una implementación de los Principios de diseño orientados a objetos. Mientras sigas estos principios, tus aplicaciones serán flexibles y escalables; incluso si realmente no tienes un patrón de diseño real. Como Joachim Sauer ha comentado anteriormente, son soluciones comunes a problemas comunes.

    
respondido por el DPD 19.07.2012 - 10:34

Lea otras preguntas en las etiquetas