Ein Entwurfsmuster bietet eine allgemeine wiederverwendbare Lösung für die häufigsten Probleme, die beim Softwaredesign auftreten. Das Muster zeigt normalerweise Beziehungen und Interaktionen zwischen Klassen oder Objekten. Die Idee ist, den Entwicklungsprozess zu beschleunigen, indem ein erprobtes, bewährtes Entwicklungs – /Designparadigma bereitgestellt wird. Entwurfsmuster sind programmiersprachenunabhängige Strategien zur Lösung eines gemeinsamen Problems. Das bedeutet, dass ein Entwurfsmuster eine Idee darstellt, keine bestimmte Implementierung., Durch die Verwendung der Entwurfsmuster können Sie Ihren Code flexibler, wiederverwendbarer und wartbarer machen.
Es ist nicht zwingend erforderlich, Entwurfsmuster immer in Ihrem Projekt zu implementieren. Entwurfsmuster sind nicht für die Projektentwicklung gedacht. Entwurfsmuster sind für die gemeinsame Problemlösung gedacht. Wann immer es notwendig ist, müssen Sie ein geeignetes Muster implementieren, um solche Probleme in Zukunft zu vermeiden. Um herauszufinden, welches Muster zu verwenden. Sie müssen nur versuchen, die Entwurfsmuster und ihre Zwecke zu verstehen. Nur bis dahin können Sie das richtige auswählen.,
Ziel:
Verstehen Sie den Zweck und die Verwendung der einzelnen Design-Muster. So können Sie das richtige Muster nach Bedarf auswählen und implementieren.
Beispiel:
In vielen realen Situationen möchten wir beispielsweise nur eine Instanz einer Klasse erstellen. Zum Beispiel kann es unabhängig von der persönlichen Identität jeweils nur einen aktiven Präsidenten des Landes geben. Dieses Muster wird als Singleton-Muster bezeichnet. Andere Softwarebeispiele könnten eine einzelne DB-Verbindung sein, die von mehreren Objekten gemeinsam genutzt wird, da das Erstellen einer separaten DB-Verbindung für jedes Objekt kostspielig ist., Ebenso kann es in einer Anwendung einen einzelnen Konfigurationsmanager oder Fehlermanager geben, der alle Probleme behandelt, anstatt mehrere Manager zu erstellen.
Arten von Entwurfsmustern
Es gibt hauptsächlich drei Arten von Entwurfsmustern:
- Creational
Bei diesen Entwurfsmustern dreht sich alles um Klasseninstanziierung oder Objekterstellung. Diese Muster können weiter in Klassen-Kreationsmuster und Objekt-Kreationsmuster kategorisiert werden., Während Klassenerstellungsmuster die Vererbung im Instanziierungsprozess effektiv verwenden, verwenden Objekterstellungsmuster die Delegierung effektiv, um die Arbeit zu erledigen.Creational design patterns sind die Factory Method, Abstract Factory, Builder, Singleton, Objekt-Pool und einen Prototyp.,
Anwendungsfall von Creational Design pattern –
1) Angenommen, ein Entwickler möchte eine einfache DbConnection-Klasse erstellen, um eine Verbindung zu einer Datenbank herzustellen, und möchte über Code an mehreren Stellen auf die Datenbank zugreifen, im Allgemeinen erstellt der Entwickler eine Instanz der DbConnection-Klasse und verwendet sie für Datenbankoperationen, wo immer dies erforderlich ist. Dies führt zum Erstellen mehrerer Verbindungen aus der Datenbank, da jede Instanz der DbConnection-Klasse eine separate Verbindung zur Datenbank hat., Um damit umzugehen, erstellen wir die DbConnection-Klasse als Singleton-Klasse, sodass nur eine Instanz von DbConnection erstellt und eine einzelne Verbindung hergestellt wird. Weil wir die DB-Verbindung über eine Instanz verwalten können, um den Lastausgleich, unnötige Verbindungen usw. zu steuern.2) Angenommen, Sie möchten mehrere Instanzen ähnlicher Art erstellen und eine lose Kopplung erreichen, dann können Sie sich für ein Factory-Muster entscheiden. Eine Klasse, die Factory Design Pattern implementiert, fungiert als Brücke zwischen mehreren Klassen. Betrachten Sie ein Beispiel für die Verwendung mehrerer Datenbankserver wie SQL Server und Oracle., Wenn Sie eine Anwendung entwickeln, die SQL Server-Datenbank als Back-End verwenden, aber in Zukunft Datenbank zu Oracle ändern müssen, müssen Sie Ihren gesamten Code ändern, so dass Fabrikdesignmuster lose Kopplung und einfache Implementierung beibehalten Wir sollten für Fabrik gehen, um lose Kopplung und Erstellung ähnlicher Art von Objekt zu erreichen.
- Structural
Bei diesen Entwurfsmustern geht es darum, verschiedene Klassen und Objekte zu organisieren, um größere Strukturen zu bilden und neue Funktionen bereitzustellen.,Structural design patterns sind Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Private Class Data, and Proxy.
Anwendungsfall des Strukturdesignmusters –
1) Wenn 2 Schnittstellen nicht miteinander kompatibel sind und eine Beziehung zwischen ihnen über einen Adapter herstellen möchten, wird dies als Adapterdesignmuster bezeichnet. Adaptermuster konvertiert die Schnittstelle einer Klasse in eine andere Schnittstelle oder Klasse, die der Client erwartet, dh Adapter lässt Klassen zusammenarbeiten, die aufgrund von Inkompatibilität nicht funktionieren könnten., in diesen inkompatiblen Szenarien können wir uns also für das Adaptermuster entscheiden.
- Behavioral
Verhaltensmuster sind über gemeinsame Kommunikationsmuster zwischen Objekten und erkennen diese Muster.,Verhaltensmuster sind Verantwortungskette, Befehl, Interpreter, Iterator, Mediator, Memento, Nullobjekt, Beobachter, Zustand, Strategie, Vorlagenmethode, Besucher
Anwendungsfall des Verhaltensdesignmusters-
1) Vorlagenmuster definiert das Skelett eines Algorithmus in einer Operation, bei der einige Schritte auf Unterklassen verschoben werden, Mit der Vorlagenmethode können Unterklassen bestimmte Schritte eines Algorithmus neu definieren, ohne die Algorithmusstruktur zu ändern., In Ihrem Projekt möchten Sie beispielsweise, dass das Verhalten des Moduls erweitert werden kann, sodass sich das Modul auf neue und unterschiedliche Weise verhält, wenn sich die Anforderungen der Anwendung ändern, oder um die Anforderungen neuer Anwendungen zu erfüllen. Es ist jedoch niemandem gestattet, Änderungen am Quellcode vorzunehmen, dh Sie können die Struktur in diesen Szenarien hinzufügen, aber nicht ändern, wenn sich ein Entwickler dem Vorlagendesignmuster nähern kann.