2008-11-26 6 views
15

Kann jemand illustrieren, was wirklich der Unterschied zwischen den beiden ist?Designmuster vs Frameworks

+0

Als ich 4 Jahre später darüber nachdachte, war das wirklich eine dumme Frage. – sarego

+2

Es ist eine dumme Frage, die offensichtlich Leuten hilft und daher keine dumme Frage ist;) – Marc

+0

Ich glaube nicht, dass es eine dumme Frage ist :) – carousel

Antwort

21

Obwohl sie zwei sehr verschiedene Dinge sind, kann man sie argumentieren beide lösen eine Software-Architektur Problem

  • ein Entwurfsmuster Fragen viele Software-Architektur löst (über die Schöpfung, Verhalten, Parallelität, ...) mit verschiedenen vordefinierten Design. (Design ist ein implementation of an architecture topic)

  • ein Framework basiert auf der Hollywood Principle („Sie uns nicht an, wir rufen Sie“), in dem Sie einige hohe Anforderungen implementieren, wie angegeben, und lassen Sie den Rahmen zu tun, den Rest die Arbeit, rufen Sie Ihre Implementierungen.

Ein wesentlicher Unterschied ist der Umfang Zusammenhalt:

  • Entwurfsmuster haben einendichtUmfang:

    • Klasse Design patte rns (betrifft die Klassen)
    • Business-Design-Muster (betrifft die Geschäftsabläufe)
    • Anwendung Entwurfsmuster (betrifft Anwendungen)
  • Rahmen haben einengroßenUmfang:
    Für Beispiel, .NET is a framework bestehend aus:

    • eine Sprache (C#)
    • eine Laufzeitumgebung (CLR)
    • eine Sammlung von Bibliotheken
      nur entwickeln, was Sie brauchen, und lassen Sie das .NET Framework Klassen aufrufen.
26

Ein Entwurfsmuster ist ein Konzept oder eine Quittung, um ein bestimmtes Problem zu lösen.

Ein Framework ist gebrauchsfertig und normalerweise so verpackt, dass das Erstellen einer Anwendung viel einfacher ist.

Es macht keinen Sinn, die Unterschiede zu erklären, weil sie zwei völlig verschiedene Dinge sind.

+0

Konnte mir nicht helfen: "Ein Design-Muster ist ein Hack, um einen Mangel in der Ausgangssprache zu überwinden. Ein Framework ist Code zur Verwendung bereit ..." – Dan

+0

Ein Framework kann ein oder mehrere Design-Muster (und auch architektonische) enthalten/verwenden Muster), aber ein Designmuster kann kein Framework enthalten. – user1364368

6

Ein Design-Muster ist ein gut etabliertes Design für die Lösung eines Problems. Ein Framework ist ein tatsächliches Code-Paket, mit dem Sie das Erstellen von Anwendungen vereinfachen. Beachten Sie, dass ein Framework Designmuster verwenden kann und wahrscheinlich auch verwenden wird.

12
|------------------------| 
|   (------)  | 
|   (ClassA)  | 
|   (------)  | 
| (-----------)   | 
| ((Singleton))   | 
| (-----------)   | 
|   (---------) |  
|   ((Factory)) | 
|   (---------) | 
|      | 
|      | 
|------------------------| 

Legend: 
    |---| Framework 
    (---) Class 
()  Design Pattern 

Ein Framework ist eine Gruppe verwandter Klassen zum Ausführen einer bestimmten Aufgabe. Diese Klassen können ein bestimmtes Designmuster implementieren oder nicht.

+1

Boo für die Verwendung von Singleton als Entwurfsmuster, +1 für nette Erklärung. :-P – Dan

+2

Es ist ein Design-Muster, ob es überstrapaziert und missbraucht wird oder nicht. : P Danke für die Verbesserung. –

4

Von Objekt -Oriented Software-Entwicklung mit Java von Xiaoping Jia:

Obwohl beide Entwurfsmuster und Frameworks sind Mechanismen, wieder verwendbaren Designs capyure, sind sie ganz anders. Entwurfsmuster sind zum einen schematische Beschreibungen wiederverwendbarer Designs, die keine konkreten Programme sind und sprachunabhängig sind. Auf der anderen Seite sind Frameworks kompilierbare Programme, die in einer bestimmten Programmiersprache geschrieben sind und oft abstrakte Klassen und Interfaces enthalten. Entwurfsmuster sind die architektonischen Bausteine ​​von Frameworks. Sie helfen dabei, Frameworks erweiterbar und wiederverwendbar zu machen. Frameworks enthalten normalerweise Implementierungen vieler kooperierender Entwurfsmuster.

3

Ein Entwurfsmuster ist eine Standardlösung zu einem bekannten (Design) Problem. Zum Beispiel bieten das Factory-Muster und das Abstract-Factory-Muster eine Blaupause für die Implementierung von Designs, um häufige Probleme bei der Instanziierung von Objekten zu überwinden.

Ein Framework auf der anderen Seite enthält eine Infrastruktur, die Sie verwenden und erweitern können, um Ihre eigene Lösung zu entwickeln. Zum Beispiel wird ein Modell 2 "Web Application Framework" die Infrastruktur zum Erstellen von webbasierten Anwendungen enthalten. Es enthält den Controller, einige GUI-Elemente und Basisklassen, die wir erweitern können, um unsere Modell- und Geschäftslogik zu erstellen. In der Regel enthält es Klonierungscode und Interaktionen, die wir erben, wenn wir von ihren Basisklassen ausgehen. Einige Beispiele für Frameworks sind Struts, JSF, Swing-Anwendungsframework, JUnit-Testframework, etc.

Einen Schritt voraus gehen auch Bibliotheken, die wir direkt aus unserem Code verwenden. Normalerweise ohne ihre Klassen zu erweitern. Log4J wäre ein Beispiel für eine Bibliothek.

0

Frameworks sind spezifischer für eine Problemdefinition. Um ein Design zu schreiben, können Muster entworfen oder verwendet werden, wo immer dies möglich ist. Hier

10

ist GOF ‚s Antwort:

Weil Muster und Frameworks einige Ähnlichkeiten haben, oft Leute fragen sich, wie oder auch wenn sie sich unterscheiden.Sie sind unterschiedlich in drei wesentlichen Punkten:

  • Entwurfsmuster sind abstrakter als Gerüste. Frameworks können in Code verkörpert sein, aber nur Beispiele von Mustern können in Code verkörpert werden. Eine Stärke von Frameworks ist, dass sie in Programmiersprachen geschrieben werden können und nicht nur untersucht, sondern direkt ausgeführt und wiederverwendet werden. Im Gegensatz dazu müssen die Muster Muster in diesem Buch bei jeder Verwendung implementiert werden. Entwurfsmuster erklären auch die Absicht, Kompromisse und Folgen eines Entwurfs.

  • Designmuster sind kleiner architektonische Elemente als Frameworks. Ein typischer Rahmen enthält mehrere Entwurfsmuster, , aber das Gegenteil ist nie wahr.

  • Entwurfsmuster sind weniger spezialisiert als Frameworks. Frameworks immer haben eine bestimmte Anwendung Domain. Ein grafisches Editorframework könnte in einer Fabrik Simulation verwendet werden, aber es wird nicht verwechselt werden für ein Simulationsframework. In Kontrast, die Design-Muster in dieser Katalog kann in fast jede Art von Anwendung verwendet werden. Während mehr spezialisierten Design-Muster als uns sicherlich möglich sind (sagen wir, Entwurfsmuster für verteilte Systeme oder gleichzeitige Programmierung), selbst würde diese keine Anwendungsarchitektur wie ein Rahmen diktieren würde.

0

Antwort ist sehr einfach: Rahmen: wie Elemente eines Systems wie (Komponente, Schichten, klasse, ...) müssen oder sollten miteinander

Design interagieren Muster: eine Lösung für ein Hochfrequenzproblem. es kann eine Umwandlung von MSSQL-Quellcode zu Oracle sein, ........ und 3 Typen haben: Analysieren, Entwerfen und Implementieren von Mustern.

2

Pattern Unterstützung Wiederverwendung von Software-Architektur und Design - Muster der statischen und dynamischen Strukturen und die Zusammenarbeit der erfolgreichen Lösung des Problems erfassen, die auftreten, wenn in bestimmten Domäne

Framework unterstützt die Wiederverwendung von Detailgestaltung Bauantrag und Code - Ein Framework ist ein integrierter Satz von einer Komponente, die zusammenarbeiten, um eine wiederverwendbare Architektur für eine Familie von verwandten Anwendungen

zusammen zu schaffen, Design-Patterns und Frameworks h hilft, die Softwarequalität zu verbessern und die Entwicklungszeit zu reduzieren.

0

Muster: Set von Gilden-Linien, Architektur der Anwendung.

Framework: Um bestimmte Muster folgen, eine Reihe von Pre-Build-Klassen und Bibliotheken zum Erstellen von Architektur-Muster.