Frage

Wenn eine Klasse zu viele Parameter im Konstruktor hat, können wir entweder eine Struktur oder ein Builder -Muster verwenden.

Welches ist besser? Gibt es eine gute Praxis?

War es hilfreich?

Lösung

Verwenden Sie eine Klasse mit Struktur, die Ihren Bedürfnissen entspricht. Martin Fowler hat eine ähnliche Technik genannt DatatransferObject (DTO), in dem Sie ein Objektmodell übergeben, anstatt die Daten mit mehreren Aufrufen (periodisch -Datenbankaufrufe) abzurufen, wodurch die Kosten gesenkt werden.

Der Nutzen über das Erbauermuster:

  1. Die Klassenstruktur hat keine zusätzliche Logik, bedeutet, dass sie einfacher zu lesen ist (weniger Logik)
  2. Nicht erstellen Konstruktor, die echte Arbeiten machen Der Code -Geruch erleichtert den Code wieder leichter zu lesen
  3. Der Betrieb ist billig, da Sie nur die Referenzen übergeben und kein brandneues Objekt erstellen. Besonders wenn die Datenstruktur groß ist.

Der Nachteil: Das Objekt befindet sich im veränderlichen Zustand.

Andere Tipps

Es würde davon abhängen, wie sich die Parameter und ihre Beziehung zueinander beziehen und wie viele benötigt werden, als optional.

Wenn mehrere Parameter miteinander verbunden sind, ist es normalerweise besser, eine separate Klasse (oder Struktur) zu erstellen, um diese Parameter zu speichern.

Zum Beispiel statt von

TransferMoney(long srcAccountNumber, int srcAmount, Currency srcCurrency, long destAccountNumber)

Wir können sehen, dass SRC Munmount und SRCCurrency verwandt sind und eine neue Klasse erstellen können, um Geld verschiedener Beträge zu verarbeiten (und möglicherweise Methoden zum Umwandeln in andere Währungen usw. hinzuzufügen) und die Anzahl der Parameter zu reduzieren:

TransferMoney(long srcAccountNumber, Money amount, long destAccountNumber)

Diese Frage ist agnostisch Sprache, aber wenn Sie eine Sprache hatten, die keine Standardwerte unterstützt (wie Java), müssen Sie möglicherweise mehrere überlastete Methoden mit unterschiedlichen Anzahl und Arten von Parametern haben, um alle möglichen Kombinationen anzupassen. Wenn es viele Kombinationen gibt, ist ein Bauunternehmer ein sauberer Weg.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top