software patrones method ejemplos diseño arquitectura arquitectonico design-patterns architecture

design patterns - method - ¿Cuál es la diferencia entre los patrones de diseño y los patrones arquitectónicos?



patrones de diseño java (4)

Cuando leemos sobre los patrones de diseño en Internet, observamos que hay 3 categorías:

  • Creacional
  • Estructural
  • Comportamiento

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

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

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

  • En caso afirmativo, ¿cómo singleton puede ser 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?


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 utiliza con un fuerte aspecto del comportamiento del producto de software reconocido por los usuarios finales, mientras que "arquitectura" representa la estructura técnica de un software, es decir, 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?


Los elementos arquitectónicos tienden hacia colecciones de clases o módulos, generalmente representados como cajas. Los diagramas sobre arquitectura representan el nivel más elevado mirando hacia abajo, mientras que los diagramas de clase están en el nivel más atómico. El propósito de los patrones de arquitectura es comprender cómo encajan las partes principales del sistema, cómo fluyen los mensajes y los datos a través del sistema y otras cuestiones estructurales. Los patrones de arquitectura utilizan una variedad de tipos de componentes, cada uno típicamente compuesto por módulos sucesivamente más pequeños. Cada componente tiene una responsabilidad dentro de la arquitectura. Los patrones de diseño son patrones de diseño de bajo nivel o nivel de clase para partículas más pequeñas de aplicaciones.

Para obtener más información: https://www.oreilly.com/ideas/contrasting-architecture-patterns-with-design-patterns


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

los patrones de arquitectura son patrones bien 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. La arquitectura de la aplicación 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.


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 una vista 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 ......................

Las expresiones idiomáticas son técnicas de programación específicas del paradigma y del lenguaje que completan los detalles de bajo nivel.

Los patrones de diseño generalmente están asociados con aspectos comunes de 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 palidecen en la insignificancia debido a los paradigmas del lenguaje . 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.

Si bien los patrones arquitectónicos se consideran 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 los mecanismos globales de un sistema.

¿Cómo se obtienen los patrones? Mediante :

  1. reutilizar,
  2. clasificación
  3. y finalmente abstracción para destilar lo común.

Si has seguido los pensamientos establecidos arriba. 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.

Intente 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