Il Blog di Shift

Pensieri e parole dal mondo dell'informatica

Baumuster ducato 18

Schließlich ist das Builder-Entwurfsmuster nützlich, wenn der Algorithmus zum Erstellen eines komplexen Objekts unabhängig von den Teilen sein soll, aus denen die Objekte bestehen, und wie sie zusammengesetzt werden. In einfachen Worten ist es nur eine einfache Extraktion der Erstellungslogik des Objekts aus seiner eigenen Klasse. Daher könnte sich der Konstruktionsalgorithmus getrennt von dem tatsächlichen Produkt entwickeln, das er bereitstellt, die Änderung dieses Prozesses erfordert eine Änderung des Objektcodes. Ahh, darum geht es! Um es besser zu verstehen, sagen wir, wir bauen ein Haus. Um ein Haus (Objekt) zu bauen, sind die Bauschritte (Baulogik) ziemlich gleich — Sie brauchen das Fundament, den Boden, einige Wände, Türen, Fenster, ein Dach, etc. Auch wenn der Bauprozess des Hauses gleich ist, könnte jeder dieser Schritte angepasst werden, daher würde das Endergebnis völlig anders aussehen. Und das ist die Hauptidee des Builder-Entwurfsmusters – abstrahieren Sie den Erstellungsprozess des Objekts, sodass Konstruktionsschritte angepasst werden können, um eine andere Darstellung (Endergebnis) bereitzustellen. Verwenden Sie das Builder-Muster, wenn Sie möchten, dass Ihr Code verschiedene Darstellungen eines Produkts erstellen kann (z. B. Stein- und Holzhäuser).

Eine Regieklasse in Ihrem Programm ist nicht unbedingt erforderlich. Sie können die Bauschritte jederzeit in einer bestimmten Reihenfolge direkt aus dem Clientcode aufrufen. Die Director-Klasse könnte jedoch ein guter Ort sein, um verschiedene Konstruktionsroutinen zu platzieren, damit Sie sie im gesamten Programm wiederverwenden können. Identifikation: Das Builder-Muster kann in einer Klasse erkannt werden, die über eine einzelne Erstellungsmethode und mehrere Methoden zum Konfigurieren des resultierenden Objekts verfügt. Builder-Methoden unterstützen häufig verketten (z. B. someBuilder->setValueA(1)->setValueB(2)->create()). Mit dem Builder-Muster können Sie Objekte Schritt für Schritt erstellen, indem Sie nur die Schritte verwenden, die Sie wirklich benötigen. Nach der Implementierung des Musters müssen Sie dutzende Von-Parameter nicht mehr in Ihre Konstruktoren packen.

Diesmal ist der Implementierungsteil sehr einfach – wir verwenden das Builder-Designmuster, um den Buildprozess von McDonald`s-Burgern zu implementieren. Das Builder-Entwurfsmuster sollte verwendet werden, wenn Sie feststellen, dass mehrere Konstruktoren derselben Klasse, die aufeinander verweisen, aufeinander verweisen. Sie haben z. B. einen Konstruktor mit mehreren optionalen Parametern. Einige dieser Parameter verfügen über Standardwerte, sodass Sie mehrere kürzere Konstruktoren mit weniger Parametern erstellen, sich aber dennoch auf den Hauptkonstruktoren beziehen. Wenn Sie das Builder-Entwurfsmuster verwenden, erstellen Sie Objekte Schritt für Schritt nur mit den Schritten, die wirklich benötigt werden – Sie müssen nicht mehr mit dem Problem mehrerer Konstruktoren mit optionalen Parametern fertig werden. Sie könnten schockiert sein, aber jedes Auto braucht ein Handbuch (ernsthaft, wer liest sie?). Das Handbuch beschreibt jedes Merkmal des Autos, so dass die Details in den Handbüchern je nach Modell variieren.

Deshalb ist es sinnvoll, einen bestehenden Bauprozess sowohl für echte Autos als auch für deren jeweilige Handbücher wiederzuverwenden. Natürlich ist das Erstellen eines Handbuchs nicht dasselbe wie das Bauen eines Autos, und deshalb müssen wir eine weitere Bauherrenklasse anbieten, die sich auf das Erstellen von Handbüchern spezialisiert hat. Diese Klasse implementiert die gleichen Baumethoden wie ihr Autobau-Geschwister, aber anstatt Autoteile herzustellen, beschreibt sie sie. Indem wir diese Bauherren an dasselbe Director-Objekt übergeben, können wir entweder ein Auto oder ein Handbuch konstruieren.

I commenti sono chiusi

Tema di Anders Norén