2010-11-22 10 views
71

Wenn wir über Designmuster im Internet lesen wir beachten Sie, dass gibt es 3 Kategorien:Was ist der Unterschied zwischen Entwurfsmustern und Architekturmustern?

  • Creational
  • Struktur
  • Behavioral

Aber wenn wir schaffen die Architektur ein Software, dann denken wir über MVP, MVC oder MVVM nach.

Zum Beispiel, unter den kreativen Mustern fand ich die Singleton Muster, aber ich habe auch Singleton in meinem MPV verwendet.

Also meine Frage ist: Ist ein Design-Muster ein über alle Struktur eines Produkts?

  • Wenn ja, wie kann Singleton ein Designmuster sein? Weil ich es überall in meiner Anwendung verwenden kann. Grundsätzlich ist es nur beschränkt, eine Instanz im Speicher zu erstellen, aber definiert dieses Konzept nicht, wie Software entworfen wird?

  • Wenn nicht, wo sind dann MVP, MVC und MVVM in den drei Kategorien von Mustern? Und was ist der Unterschied zwischen Design und Architektur von Software?

+0

Bereits diskutiert: https://stackoverflow.com/a/46419722/3649347 – GeekOnJava

Antwort

121

Es erfordert eine detaillierte Erklärung, aber ich werde versuchen, die Unterschiede nach meinem besten Wissen zu skizzieren.

Muster sind destillierte Gemeinsamkeit, die Sie in Programmen finden. Es erlaubt uns, eine große komplexe Struktur zu dekonstruieren und mit einfachen Teilen zu bauen. Es bietet eine allgemeine Lösung für eine Klasse von Problemen.

Eine große komplexe Software durchläuft eine Reihe von Dekonstruktionen auf verschiedenen Ebenen. Auf großer Ebene sind architektonische Muster die Werkzeuge. Auf einer kleineren Ebene sind Entwurfsmuster die Werkzeuge und auf der Implementierungsebene sind Programmierparadigmen die Werkzeuge.

Ein Muster kann auf sehr unterschiedlichen Ebenen auftreten. Siehe Fractals. Schnellsortierung, Zusammenführungssortierung sind algorithmische Muster zum Organisieren einer Gruppe von Elementen in einer Reihenfolge.

Für eine höchst vereinfachte Sicht:

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

Idiom sind Paradigma spezifische und sprachspezifische Programmiertechniken, die in Low-Level-Details zu füllen.

Entwurfsmuster sind normalerweise mit Common-Level-Codes verbunden. Es bietet verschiedene Schemata zur Verfeinerung und zum Aufbau kleinerer Subsysteme. Es wird normalerweise von der Programmiersprache beeinflusst. Einige Muster verblassen aufgrund von language paradigms in Bedeutungslosigkeit. Entwurfsmuster sind mittlere Taktiken, die etwas von der Struktur und dem Verhalten von Entitäten und ihren Beziehungen ausprägen.

Während Architekturmuster gelten als Gemeinsamkeit auf höherer Ebene als Design-Muster. Architekturmuster sind High-Level-Strategien, die große Komponenten, die globalen Eigenschaften und Mechanismen eines Systems betreffen.

Wie werden Muster erhalten? durch:

  1. Wiederverwendung,
  2. Klassifizierung
  3. und schließlich Abstraktion die Gemeinsamkeit zu destillieren.

Wenn Sie die oben genannten Gedanken befolgt haben. Sie werden sehen, dass Singleton ein "Entwurfsmuster" ist, während MVC eines der "architektonischen" Muster ist, die sich mit der Trennung von Bedenken befassen.

Versuchen Sie, auf das Lesen:

  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

Sehr gut gemacht und ausgearbeitet. Jetzt wünschte ich nur, jeder würde die Begriffe so differenziert verwenden, wie du sie hier angegeben hast. Darf ich einen Abdruck Ihrer Antwort an der Wand über dem Kaffeeautomaten unserer Marketingabteilung anbringen? Vielleicht werden sie eines Tages verstehen.;-) – ofi

+0

@ofi: Danke! Der Gebrauch von Sprachkonstrukten kann uns sowohl irreführen als auch führen. Das finde ich ziemlich mächtig. – pyfunc

+0

+3 für die Rettung von den Interview Fragen :) –

0

Nun, für den Hauptteil ist es eine Frage der Sprache. Nach meiner Erfahrung ist die Grenze zwischen Design und Architektur, soweit es die Software betrifft, ein breiter Fluss, dessen Breite sich aus dem Wasserspiegel ergibt, der wiederum hauptsächlich von den Vermarktungszeiten beeinflusst wird. Im Allgemeinen wird der Begriff "Design" mit einem starken Aspekt des Verhaltens des Softwareprodukts verwendet, wie er von Endbenutzern erkannt wird, während "Architektur" für die technische Struktur einer Software steht, d. e. die Komponenten, Bibliotheken, Protokolle und was immer es braucht, um das Design zu erfüllen. "Design Patterns" haben zwei Rollen: Erstens werden sie als Best Practices zur Lösung einer Kategorie von (mehr oder weniger) Standardproblemen angesehen, nicht von Produkten; 2. Sie helfen den Entwicklern zu kommunizieren. Wenn Sie bei Ihrem Beispiel eines Singleton bleiben, können wir wissen, worum es bei den Mechaniken geht, indem Sie einfach das Wort verwenden, anstatt jedes Mal zu erklären, dass wir eine einzelne Instanz unter Verwendung eines bestimmten Datenraums (Variable oder was auch immer) erstellt haben Eine kontrollierte Art und Weise und garantiert ist die einzige, weil wir den Konstruktor der Klasse etc. geschützt haben. Also IMHO ist die kurze Antwort auf Ihre Frage: Es kommt darauf an, wer gerade spricht. Macht das Sinn?

3

Design Patterns sind bekannt Muster für technische Probleme in einer Art und Weise zu lösen, die sich vielfach bewährt hat. Entwurfsmuster sind gängige Entwurfsstrukturen und -praktiken, die die Erstellung wiederverwendbarer objektorientierter Software ermöglichen. Entwurfsmuster Beispiele sind Factory-Muster, Singleton, Fassade, State, etc. Design-Muster können verwendet werden, um kleinere Probleme in der gesamten Anwendung zu lösen, und sind viel einfacher zu injizieren, ändern, hinzufügen als die Gesamtarchitektur Architektur sind gut bekannte Muster zum Lösen von Software-Anwendungsarchitekturproblemen. Software-Anwendungsarchitektur ist der Prozess der Definition einer strukturierten Lösung, die alle technischen und betrieblichen Anforderungen erfüllt. A Die Architektur der Anwendung ist die allgemeine "Organisation" des Codes. Beispiele für unterschiedliche Architekturen können MVC, MVVM, MVP, n-Layer (d. H. UI-BLL-DAL) usw. sein. Die Architektur muss typischerweise im Voraus entschieden werden und ist oft schwierig zu ändern, sobald die Anwendung erstellt ist.

Verwandte Themen