2008-11-26 18 views
15

¿Alguien puede ilustrar cuál es realmente la diferencia entre los dos?Patrones de diseño vs Marcos

+0

Ahora que lo pienso 4 años después, esta era realmente una pregunta tonta. – sarego

+2

Es una pregunta tonta que obviamente ayuda a las personas y, por lo tanto, no es una pregunta tonta;) – Marc

+0

No creo que sea una pregunta tonta :) – carousel

Respuesta

21

pesar de que son dos cosas muy diferentes, se puede argumentar que tanto resolver un problema de arquitectura de software

  • un patrón de diseño resuelve muchos problemas de arquitectura de software (sobre la creación, el comportamiento, la concurrencia, ...) con diferente diseño predefinido. (Diseño de ser un implementation of an architecture topic)

  • un marco se basa en la Hollywood Principle ("No nos llame, nosotros le llamamos"), donde se implementa algunos requisitos de alto nivel como se especifica, y dejar el marco hacemos el resto de el trabajo, llamando a sus implementaciones.

Una diferencia clave es la cohesión alcance:

  • patrón de diseño tienen unapretadaalcance:

    • clase de diseño Patte RNS (se refiere a clases)
    • patrones de diseño de negocios (se refiere a los flujos de trabajo)
    • patrones de diseño de aplicaciones (se refiere a las aplicaciones)
  • marco tiene unagranalcance:
    Para instancia, .NET is a framework compuesto por:

    • una lengua (C#)
    • un entorno de ejecución (CLR)
    • una colección de bibliotecas
      Sólo desarrollar lo que necesita y deje que el marco .Net llamar a sus clases.
26

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

Un marco está listo para usar, normalmente empaquetado de 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.

+0

No pude ayudarme a mí mismo: "Un patrón de diseño es un truco para superar una deficiencia en el idioma de origen. Un marco está listo para usar ..." – Dan

+0

Un marco puede contener/usar uno o más patrones de diseño (y también patrones), pero un patrón de diseño no puede contener un marco. – user1364368

6

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.

12
|------------------------| 
|   (------)  | 
|   (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.

+1

Boo para usar el conteo de singleton como patrón de diseño, +1 para una buena explicación. :-P – Dan

+2

Es un patrón de diseño, ya sea que se use en exceso o no, o no. : P Gracias por el voto popular. –

4

De objeto -oriented desarrollo de software utilizando Java por Xiaoping Jia:

Aunque ambos patrones de diseño y los marcos son mecanismos utilizados para capyure diseños reutilizables, que son muy 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.

3

Un patrón de diseño es una solución estándar a un problema (diseño) bien conocida. 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, marco de prueba JUnit, etc ...

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

0

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.

10

Aquí es GOF 's respuesta:

Dado 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 de marcos. Los marcos pueden ser incorporados en el código, pero solo los ejemplos de patrones pueden incorporarse en el código. Una fortaleza de frameworks es que se pueden escribir en lenguajes de programación y no solo estudiados sino ejecutados y reutilizados directamente. Por el contrario, los patrones de diseño en este libro deben ser implementados cada vez que se utilizan. Los patrones de diseño también explican el intento , las compensaciones y las consecuencias de un diseño.

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

  • Los patrones de diseño son menos especializados que los marcos. Los marcos siempre tienen una aplicación particular de dominio. Un marco de editor gráfico se puede usar en una simulación de fábrica , pero no se confundirá con para un marco de simulación. En contraste, los patrones de diseño en este catálogo se puede utilizar en casi cualquier tipo de aplicación . Mientras más patrones de diseño especializado de nuestros son ciertamente posible (por ejemplo, patrones de diseño para sistemas distribuidos o programación concurrente), incluso éstos no dictan una arquitectura aplicación como un marco haría.

0

respuesta es muy fácil: marco: cómo los elementos de un sistema, tales como (componentes, capas, clase, ...) deben o deberían interactuar entre sí de diseño

patrón: 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.

2

patrón de reutilización de apoyo de la arquitectura de software y diseño - Patrón capturar las estructuras y la colaboración de la solución exitosa estáticas y dinámicas a problemas que surgen en la construcción de la aplicación, en particular dominio

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

Juntos, patrones de diseño y marcos h para mejorar la calidad del software y reducir el tiempo de desarrollo.

0

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

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