it-swarm.com.de

Was ist der Unterschied zwischen Entwurfsmustern und Architekturmustern?

Wenn wir im Internet über Design Patterns lesen, stellen wir fest, dass es 3 Kategorien gibt:

  • Schöpferisch
  • Strukturelle
  • Verhaltens

Wenn wir jedoch die Architektur einer Software erstellen, denken wir an MVP, MVC oder MVVM.

Zum Beispiel habe ich unter den Kreationsmustern das Singleton-Muster gefunden, aber ich habe in meinem MPV auch Singleton verwendet.

Meine Frage lautet also: Ist ein Entwurfsmuster die Gesamtstruktur eines Produkts?

  • Wenn ja, wie Singleton kann dann ein Entwurfsmuster sein? Weil ich es überall in meiner Anwendung verwenden kann. Grundsätzlich ist es beschränkt, immer nur eine Instanz im Speicher zu erstellen. Definiert dieses Konzept jedoch 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?

106
Jeevan Bhatt

Es bedarf einer detaillierten Erklärung, aber ich werde versuchen, die Unterschiede nach bestem Wissen zu skizzieren.

Muster sind destillierte Gemeinsamkeiten, die Sie in Programmen finden. Es ermöglicht uns, eine große komplexe Struktur zu dekonstruieren und aus einfachen Teilen zu bauen. Es bietet eine allgemeine Lösung für eine Reihe von Problemen.

Eine große komplexe Software durchläuft eine Reihe von Dekonstruktionen auf verschiedenen Ebenen. Im Großen und Ganzen sind Architekturmuster das Werkzeug. Auf kleinerer Ebene sind Entwurfsmuster die Werkzeuge, und auf Implementierungsebene sind Programmierparadigmen die Werkzeuge.

Ein Muster kann auf sehr unterschiedlichen Ebenen auftreten. Siehe Fraktale . Schnelles Sortieren, Sortieren zusammenführen sind alle algorithmischen Muster zum Organisieren einer Gruppe von Elementen in einer Reihenfolge.

Zur Vereinfachung:

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

Redewendungen sind paradigmenspezifische und sprachspezifische Programmiertechniken, die Details auf niedriger Ebene ausfüllen.

Entwurfsmuster sind normalerweise mit Gemeinsamkeiten auf Codeebene verbunden. Es bietet verschiedene Verfahren zur Verfeinerung und zum Aufbau kleinerer Teilsysteme. Es wird normalerweise von der Programmiersprache beeinflusst. Einige Muster verblassen aufgrund von Sprachparadigmen . Entwurfsmuster sind mittelgroße Taktiken, die einen Teil der Struktur und des Verhaltens von Entitäten und ihrer Beziehungen beschreiben.

Während Architekturmuster auf einer höheren Ebene als Entwurfsmuster als Gemeinsamkeit angesehen werden. Architekturmuster sind übergeordnete Strategien, die sich auf große Komponenten, die globalen Eigenschaften und Mechanismen eines Systems beziehen.

Wie werden Muster erhalten? Durch :

  1. wiederverwendung,
  2. einstufung
  3. und schließlich Abstraktion, um die Gemeinsamkeit zu destillieren.

Wenn Sie den oben angegebenen Gedanken gefolgt sind. Sie werden sehen, dass Singleton ein "Entwurfsmuster" ist, während MVC eines der "architektonischen" Muster ist, um die Trennung von Bedenken zu behandeln.

Versuchen Sie weiterzulesen:

  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
157
pyfunc

Design Patterns sind bekannte Muster zur Lösung technischer Probleme in vielfach bewährter Weise. Entwurfsmuster sind gängige Entwurfsstrukturen und -praktiken, mit denen wiederverwendbare objektorientierte Software erstellt werden kann. Beispiele für Entwurfsmuster sind Factory Pattern, Singleton, Facade, State usw. Entwurfsmuster können zur Lösung kleinerer Probleme in der gesamten Anwendung verwendet werden und sind viel einfacher zu injizieren, zu ändern und hinzuzufügen als die gesamte Architektur

architekturmuster sind bekannte Muster zum Lösen von Architekturproblemen von Softwareanwendungen. Unter Softwareanwendungsarchitektur versteht man das Definieren einer strukturierten Lösung, die alle technischen und betrieblichen Anforderungen erfüllt. Die Architektur der Anwendung ist die Gesamtorganisation des Codes. Beispiele für verschiedene Architekturen sind MVC, MVVM, MVP, n-Layer (d. H. UI-BLL-DAL) usw. Die Architektur muss in der Regel von vornherein festgelegt werden und ist oft schwierig zu ändern, sobald die Anwendung erstellt wurde.

9

Architekturelemente tendieren zu Sammlungen von Klassen oder Modulen, die im Allgemeinen als Kästchen dargestellt werden. Diagramme über Architektur stellen die höchste Ebene dar, während Klassendiagramme auf der atomarsten Ebene liegen. Der Zweck von Architekturmustern besteht darin, zu verstehen, wie die Hauptteile des Systems zusammenpassen, wie Nachrichten und Daten durch das System fließen und andere strukturelle Probleme. Architekturmuster verwenden eine Vielzahl von Komponententypen, von denen jeder typischerweise aus aufeinanderfolgend kleineren Modulen besteht. Jede Komponente hat eine Verantwortung innerhalb der Architektur. Entwurfsmuster sind Entwurfsmuster auf niedriger Ebene oder Klassenebene für kleinere Partikel von Anwendungen.

Weitere Informationen: https://www.oreilly.com/ideas/contrasting-architecture-patterns-with-design-patterns

1
Vishnu Chandel

Entwurfsmuster unterscheiden sich von Architekturmustern in ihrem Umfang, sie sind lokalisierter, sie wirken sich weniger auf die Codebasis aus, sie wirken sich auf einen bestimmten Abschnitt der Codebasis aus, zum Beispiel:

How to instantiate an object when we only know what type needs to be instantiated at run time (maybe a Factory Class?)
How to make an object behave differently according to its state (maybe a state machine, or a Strategy Pattern?)

Architekturmuster haben einen großen Einfluss auf die Codebasis und wirken sich am häufigsten auf die gesamte Anwendung aus, entweder horizontal (dh wie der Code innerhalb einer Ebene strukturiert wird) oder vertikal (dh wie eine Anforderung von den äußeren Ebenen in die inneren Ebenen und verarbeitet wird) zurück). Beispiele für Architekturmuster: Model-View-Controller, Model-View-ViewModel

0
Isuru vindula

Nun, im Wesentlichen ist es eine Frage der Sprache. Meiner Erfahrung nach ist die Grenze zwischen Design und Architektur in Bezug auf Software ein breiter Fluss, dessen Breite sich aus dem Wasserstand ergibt, der wiederum hauptsächlich von den Jahreszeiten des Marketings beeinflusst wird. Im Allgemeinen wird der Begriff "Design" mit einem starken Aspekt des vom Endbenutzer erkannten Verhaltens des Softwareprodukts verwendet, während "Architektur" für die technische Struktur einer Software steht, d.h. e. die Komponenten, Bibliotheken, Protokolle und alles, was zur Erfüllung des Designs benötigt wird. "Entwurfsmuster" haben zwei Aufgaben: Erstens werden sie als bewährte Verfahren zur Lösung einer Kategorie von (mehr oder weniger) Standardproblemen angesehen, nicht von Produkten. 2. Sie helfen den Entwicklern bei der Kommunikation. In Anlehnung an Ihr Beispiel für einen Singleton können wir anhand der Verwendung von Word herausfinden, worum es in der Mechanik geht, anstatt jedes Mal zu erklären, dass wir eine einzelne Instanz mithilfe eines festgelegten Datenbereichs (Variable oder was auch immer) erstellt haben, der in festgelegt ist eine kontrollierte Art und Weise und ist garantiert die einzige, weil wir den Konstruktor der Klasse usw. geschützt haben. Also IMHO lautet die kurze Antwort auf Ihre Frage: Es kommt darauf an, wer spricht. Ergibt das einen Sinn?

0
ofi