Frage

Ich habe einige Messobjektinstanzen aus einer Reihe von Tests in einem Testsammelobjekt gespeichert läuft. Ich habe auch eine gewisse Logik, die zwei Testergebnis Objektinstanzen vergleichen können und mir sagen, ob sie „nahe genug“ sind.

Wo sollte diese Logik gesetzt werden?

  1. Auf dem Objekt als Methode? Wie: instance.approximately_equal(other)
  2. Auf der Klasse des Objekts als eine Klasse / statische Methode? class.approximately_equal(a,b)
  3. Auf dem Sammelobjekt als Methode? collection.approximately_equal(a,b)

Was ist das richtige OO-Design für das?

(ich frage, denn obwohl # 1 wäre die richtige Lösung scheint, würde ich nie fragen, ob einige eine Instanz ist approximately_equal zu einer anderen Instanz. Nur wenn „einige Gruppe von Objekten“ einander gleich sind. Es wurde mir zu denken ...)

Danke

War es hilfreich?

Lösung

Die objektorientierte Design Bücher, die ich gelesen habe vorschlagen setzen Quer Klasse Funktionalität in Service-Provider-Objekte. Dadurch werden die beiden Objekte entkoppeln und die Komplexität zu reduzieren, aber sein viel des Guten kann, wenn Ihr Projekt klein ist.

Andere Tipps

würde ich verwenden Option 1 (Beispiel-Methode), da dies ermöglicht es Ihnen, die Vergleichslogik in abgeleiteten Klassen zu verfeinern (falls erforderlich).

Ich habe # 3 ist die am wenigsten aufdringliche und führt zu weniger aufgeblähtem Code gefunden, weil es dazu neigt, Sie zu zwingen, diese Methoden als flexible / wiederverwendbar wie möglich zu machen. Zum Beispiel in C ++, würden Sie möglicherweise verwenden nur Betreiber Überlastung es zu handhaben; wenn Sie eine Utility-Klasse (oder, wenn Sie auf der Erweiterung einen nativer Datentypen planen), der Netto-Effekt ist das gleiche, nur mit einer anderen Darstellung.

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