2010-11-22 29 views
71

Cuando leemos sobre patrones de diseño en Internet observamos que hay 3 categorías:¿Cuál es la diferencia entre los patrones de diseño y los patrones arquitectónicos?

  • creacional
  • estructural
  • Comportamiento

Pero cuando creamos la arquitectura de una software, entonces pensamos en MVP, MVC o MVVM.

Por ejemplo, entre los patrones de creación encontré el patrón singleton, pero también he usado singleton en mi MPV.

Así que mi pregunta es: ¿es un patrón de diseño sobre toda la estructura de un producto?

  • En caso afirmativo, ¿cómo puede ser singleton un patrón de diseño? Porque puedo usarlo en cualquier lugar de mi aplicación. Básicamente, está restringido solo para crear una instancia a la vez en la memoria, pero ¿no define este concepto cómo se diseña el software?

  • Si no, ¿dónde están MVP, MVC y MVVM en las tres categorías de patrones? ¿Y cuál es la diferencia entre el diseño y la arquitectura del software?

+0

Ya discutido: https://stackoverflow.com/a/46419722/3649347 – GeekOnJava

Respuesta

121

Requiere una explicación detallada, pero intentaré esbozar las diferencias a mi leal saber y entender.

Los patrones son elementos comunes destilados que se encuentran en los programas. Nos permite deconstruir una gran estructura compleja y construir usando partes simples. Proporciona una solución general para una clase de problemas.

Un gran software complejo pasa por una serie de deconstrucción en diferentes niveles. A gran nivel, los patrones arquitectónicos son las herramientas. En un nivel más pequeño, los patrones de diseño son las herramientas y, a nivel de implementación, los paradigmas de programación son las herramientas.

Un patrón puede ocurrir en niveles muy diferentes. Ver Fractals. Clasificación rápida, clasificación de combinación son todos patrones algorítmicos para organizar un grupo de elementos en un orden.

Para tener una visión más simplista:

Programming paradigms Specific to programming language 
...................... 
Design patterns   Solves reoccurring problems in software construction 
...................... 
Architectural patterns Fundamental structural organization for software systems 
...................... 

modismos son técnicas paradigma específicos y específicos del lenguaje de programación que completar los detalles de bajo nivel.

Los patrones de diseño generalmente están asociados con las características comunes del nivel de código. Proporciona varios esquemas para refinar y construir subsistemas más pequeños. Por lo general, está influenciado por el lenguaje de programación. Algunos patrones se vuelven insignificantes debido a language paradigms. Los patrones de diseño son tácticas de escala media que desarrollan parte de la estructura y el comportamiento de las entidades y sus relaciones.

Mientras que patrones arquitectónicos se consideran como elementos comunes en un nivel más alto que los patrones de diseño. Los patrones arquitectónicos son estrategias de alto nivel que se refieren a componentes a gran escala, las propiedades y mecanismos globales de un sistema.

¿Cómo se obtienen los patrones? A través de :

  1. reutilización,
  2. clasificación
  3. y, finalmente, la abstracción para destilar el carácter común.

Si ha seguido los pensamientos establecidos anteriormente. Verá que Singleton es un "patrón de diseño", mientras que MVC es uno de los patrones "arquitectónicos" para lidiar con la separación de preocupaciones.

tratar de leer en:

  1. http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science)
  2. http://en.wikipedia.org/wiki/Design_pattern
  3. http://en.wikipedia.org/wiki/Anti-pattern
+5

Muy bien hecho y elaborado. Ahora solo deseaba que todos usaran los términos tan diferenciados como los puso aquí. ¿Puedo anotar una impresión de su respuesta en la pared sobre el dispensador de café de nuestro departamento de marketing? Tal vez lo entenderán algún día.;-) – ofi

+0

@ofi: ¡Gracias! El uso del constructo del lenguaje puede engañarnos y guiarnos. Esto es algo que encuentro bastante poderoso. – pyfunc

+0

+3 por salvarnos de las preguntas de la entrevista :) –

0

Bueno, para la parte principal es una cuestión de idioma. De acuerdo con mi experiencia, el límite entre el diseño y la arquitectura, en lo que respecta al software, es un río ancho con su ancho resultante del nivel del agua, que a su vez está influenciado principalmente por las estaciones de comercialización. En general, el término "diseño" se usa con un fuerte aspecto del comportamiento del producto de software tal como lo reconocen los usuarios finales, mientras que "arquitectura" representa la estructura técnica de un software, i. mi. los componentes, bibliotecas, protocolos y todo lo que necesita para cumplir con el diseño. Los "patrones de diseño" tienen dos roles: primero, se los considera como las mejores prácticas para resolver una categoría de (más o menos) problemas estándar, no productos; Segundo, ayudan a los desarrolladores a comunicarse. Siguiendo con su ejemplo de Singleton, nos permite saber de qué se trata la mecánica con solo usar la palabra, en lugar de explicar cada vez, que creamos una sola instancia mediante el uso de un espacio de datos designado (variable o lo que sea) que se establece en de una manera controlada y se garantiza que es el único, porque protegimos al constructor de la clase, etc. En mi humilde opinión, la breve respuesta a su pregunta es: depende de quién está hablando. ¿Eso tiene algún sentido?

3

patrones de diseño son patrones bien conocidos para la resolución de problemas técnicos en una forma que sí ha demostrado muchas veces. Los patrones de diseño son estructuras y prácticas de diseño comunes que crean un software reutilizable orientado a objetos. Ejemplos de patrones de diseño son Factory Pattern, Singleton, Facade, State, etc. Los patrones de diseño se pueden utilizar para resolver problemas más pequeños en toda la aplicación, y son mucho más fáciles de inyectar, agregar o agregar que la arquitectura general

patrones de arquitectura están bien patrones conocidos para resolver problemas de arquitectura de aplicaciones de software. La arquitectura de aplicaciones de software es el proceso de definición de una solución estructurada que cumple con todos los requisitos técnicos y operativos. A La arquitectura de pplication es la "organización" general del código. Ejemplos de diferentes arquitecturas pueden ser MVC, MVVM, MVP, n-layer (es decir, UI-BLL-DAL), etc. La arquitectura generalmente necesita decidirse desde el principio y, a menudo, es difícil de modificar una vez que se ha creado la aplicación.

Cuestiones relacionadas