tipos patrones ejemplos diseño comportamiento arquitectura design-patterns frameworks

design-patterns - ejemplos - patrones de diseño web



Patrones de diseño vs Frameworks (11)

¿Alguien puede ilustrar cuál es realmente la diferencia entre los dos?


Desde el desarrollo de software orientado a objetos utilizando Java por Xiaoping Jia :

Aunque tanto los patrones de diseño como los marcos son mecanismos utilizados para capilar los diseños reutilizables, son bastante diferentes. Por un lado, los patrones de diseño son descripciones esquemáticas de diseños reutilizables que no son programas concretos y que son independientes del lenguaje. Por otro lado, los marcos son programas compilables escritos en un lenguaje de programación específico y a menudo contienen clases e interfaces abstractas. Los patrones de diseño son los componentes arquitectónicos de los marcos. Ayudan a que los marcos sean extensibles y reutilizables. Los marcos generalmente contienen implementaciones de muchos patrones de diseño cooperativos.


Los marcos son más específicos para una definición de problema. Para escribir un diseño, los patrones se pueden diseñar o usar donde sea aplicable.


Un patrón de diseño es un concepto o un recibo de cómo resolver un problema específico.

Un Framework está listo para usar, normalmente empaquetado de una manera que hace que crear una aplicación sea mucho más fácil.

No tiene sentido explicar las diferencias porque son dos cosas totalmente diferentes.


Un patrón de diseño es un diseño bien establecido para abordar un problema. Un marco es un paquete de código real que utiliza para facilitar la creación de aplicaciones. Tenga en cuenta que un marco puede y probablemente hará uso de patrones de diseño.


Un patrón de diseño es una solución estándar para un problema bien conocido (de diseño). Por ejemplo, el patrón Factory y el patrón Abstract Factory ofrecen un modelo para implementar diseños para superar problemas comunes al crear instancias de objetos.

Un marco, por otro lado, contiene una infraestructura que puede usar y ampliar para desarrollar su propia solución. Por ejemplo, un "marco de aplicación web" modelo 2 contendrá la infraestructura para construir aplicaciones basadas en web. Contendrá el controlador, algunos elementos de GUI y clases base que podemos ampliar para crear nuestro modelo y lógica de negocios. Típicamente contiene código de plomería e interacciones que heredamos cuando nos extendemos de sus clases base. Algunos ejemplos de frameworks son Struts, JSF, Swing Application Framework, JUnit testing framework, etc ...

Yendo un paso por delante también hay bibliotecas, que utilizamos directamente de nuestro código. Usualmente sin extender sus clases. Log4J sería un ejemplo de una biblioteca.


|------------------------| | (------) | | (ClassA) | | (------) | | (-----------) | | ((Singleton)) | | (-----------) | | (---------) | | ((Factory)) | | (---------) | | | | | |------------------------| Legend: |---| Framework (---) Class () Design Pattern

Un marco es un conjunto de clases relacionadas para realizar una determinada tarea. Esas clases pueden o no implementar un cierto patrón de diseño.


Aquí está la respuesta de GOF :

Debido a que los patrones y los marcos tienen algunas similitudes, las personas a menudo se preguntan cómo o incluso si difieren. Son diferentes en tres formas principales:

  • Los patrones de diseño son más abstractos que los marcos. Los marcos pueden incorporarse en código, pero solo los ejemplos de patrones pueden incorporarse en el código. Una fortaleza de los marcos es que pueden escribirse en los lenguajes de programación y no solo estudiarse sino ejecutarse y reutilizarse directamente. Por el contrario, los patrones de diseño en este libro deben implementarse cada vez que se utilizan. Los patrones de diseño también explican la intención, las compensaciones y las consecuencias de un diseño.

  • Los patrones de diseño son elementos arquitectónicos más pequeños que los marcos. Un marco típico contiene varios patrones de diseño, pero el reverso nunca es verdadero.

  • Los patrones de diseño son menos especializados que los marcos. Los marcos siempre tienen un dominio de aplicación particular. Un marco de editor gráfico podría usarse en una simulación de fábrica, pero no se confundirá con un marco de simulación. Por el contrario, los patrones de diseño en este catálogo se pueden utilizar en casi cualquier tipo de aplicación. Si bien son más posibles los patrones de diseño más especializados que los nuestros (por ejemplo, patrones de diseño para sistemas distribuidos o programación simultánea), incluso estos no dictarían una arquitectura de aplicación como lo haría un marco.


la respuesta es muy fácil: marco : cómo los elementos de un sistema como (componente, capas, clase, ...) deben o deben interactuar entre sí

patrón de diseño : una solución para un problema de alta frecuencia. puede ser una transformación del código fuente de MSSQL a Oracle, ........ y tiene 3 tipos: analizar, diseñar e implementar patrones.


Patrón de reutilización de la arquitectura y el diseño del software : el patrón captura las estructuras estáticas y dinámicas, y la colaboración de la solución exitosa al problema que surge al crear la aplicación en un dominio particular.

El marco admite la reutilización del diseño y el código de detalle : un marco es un conjunto integrado de un componente que colabora para proporcionar una arquitectura reutilizable para una familia de aplicaciones relacionadas.

Juntos, los patrones de diseño y los marcos ayudan a mejorar la calidad del software y a reducir el tiempo de desarrollo.


A pesar de que son dos cosas muy diferentes, uno puede argumentar que ambos resuelven un problema de arquitectura de software

  • un patrón de diseño resuelve muchos problemas de arquitectura de software (sobre creación, comportamiento, concurrencia, ...) con diferentes diseños predefinidos. (el diseño es una implementación de un tema de arquitectura )

  • un marco se basa en el Principio de Hollywood ("No nos llames, te llamamos"), donde implemente algunos requisitos de alto nivel como se especifica, y deja que el marco haga el resto del trabajo, llamando a tus implementaciones.

Una diferencia clave es la cohesión del alcance :

  • patrón de diseño tiene un alcance estrecho :

    • patrones de diseño de clase (incluye clases)
    • patrones de diseño de negocios (involucra flujos de trabajo de negocios)
    • patrones de diseño de aplicaciones (involucra aplicaciones)
  • el marco tiene un gran alcance :
    Por ejemplo, .NET es un marco compuesto por:

    • un idioma (C #)
    • un entorno de tiempo de ejecución (CLR)
    • una colección de bibliotecas
      Solo desarrolle lo que necesita y deje que .Net Framework llame a sus clases.

Patrón : conjunto de líneas del gremio, la arquitectura de la aplicación.

Marco : para seguir un patrón particular, conjunto de clases y bibliotecas preconstruidas para crear un patrón de arquitectura.