2017-01-07 2 views
-1

Grundlegende Frage ist, ob wir Logik in "Objekt" -Klassen oder in getrennten Diensten behalten sollten, die Berechnungen durchführt?Sollte Objekt eigene Aktionen/Logik behandeln?

Lassen Sie uns Szenario haben: Wir haben Objekt vom Typ "Polygon", das auf einem Canvas angezeigt werden kann, es kann auch mit anderen Polygonen zusammengeführt werden, die neue Summe aus beiden erstellen. Also sollten wir Methoden wie haben: 1. DrawOnCanvas (..) 2. Merge (..) So die Frage ist, sollten diese Methoden auf Polygon-Klasse (gut DrawOnCanvas könnte in Canvas-Klasse gespeichert werden) oder auf einigen PolygonService-Klasse?
Gibt es einige formalisierte Methoden, die einen Weg über den anderen vorschlagen?

Antwort

0

Gibt es einige formalisierte Methoden, die einen Weg über die anderen vorschlagen?

Überhaupt nicht, aber Sie würden dies a good separation of concerns nennen.

Einige Beobachtungen:

  • Ein Betrieb wie DrawOnCanvas(...) nicht einer Polygon Klasse sein würde, weil Sie Wiederverwertbarkeit erzwingen möchten. Das heißt, ein Polygon sollte als ein Zeichenobjekt oder einfach als ein reguläres Domänenobjekt verwendbar sein. Ich sehe eine DrawOnCanvas(...) Methode als Teil einer Klasse wie UIRenderer, die eine Überladung bereitstellen würde, um Instanzen von Polygon zu behandeln.

  • Merge(...) sollte nicht auf Polygon sein, weil zwei Polygone beteiligt ist. Es ist sicher, es auf einem PolygonService zu implementieren.

  • Sie sollten Methoden auf Polygon implementieren, wenn diese eine Operation darstellen, die die Polygon oder nur mutiert beinhaltet eine bestimmte Instanz von Polygon. Zum Beispiel CalculateArea(...), CalculatePerimeter(...) ...

0

A PolygonService ist definitiv eine schlechte Idee, wenn auch nur wegen des Namens. Möglicherweise benötigen Sie eine zusätzliche Klasse, die für die Interaktion zwischen Canvas und Polygon verantwortlich ist, sobald sie von interessanter Komplexität ist und definitiv einen anderen Namen benötigt, und kein Mischen mit einer Klasse, die für das Zusammenführen und Erstellen neuer Klassen zuständig ist.

Verwandte Themen