2008-09-17 9 views
2

In der Anwendung, die ich schreibe, habe ich eine Policy-Klasse. Es gibt 4 verschiedene Arten von Richtlinien. Jede Richtlinie wird mit den anderen Richtlinien wie PolicyA> PolicyB> PolicyC> PolicyD gewichtet.Wessen Verantwortung ist es überhaupt?

Wer ist verantwortlich, die Logik zu implementieren, um festzustellen, ob eine Richtlinie größer als eine andere ist? Mein erster Gedanke ist, die Operatoren> und < zu überladen und die Logik im Richtlinientyp selbst zu implementieren.

Verstößt das gegen die SRP?

Antwort

6

Ich würde denken, dass eine PolicyComparer-Klasse die Auswertung durchführen sollte.

0

Ich glaube, Sie auf dem richtigen Weg mit der Überlastung sind jedoch die Ausdehnung dieses ist offensichtlich viel länger

wenn (A> B || B> C || C> D) ...

0

Sie könnten auch ein PolicyWeight-Attribut in Ihrer Klasse speichern, das ein einfacher integrierter Typ ist (int, unsigned int, ...), der dann einfach verglichen werden kann.

0

Certian eine dedizierte Vergleichs Klasse. Wenn Sie jemals zusätzliche Logik bereitstellen müssen (z. B. haben Sie zwei oder drei verschiedene Möglichkeiten zum Vergleichen von Richtlinien), bietet Ihnen dieser Ansatz mehr Flexibilität (nicht durch Überlastungen des Operators erreichbar).

0

Sie möchten eine PolicyComparator-Klasse. Wenn Sie < und> überschreiben möchten, ist das in Ordnung, aber überschreiben Sie dies in der Policy-Basisklasse und lassen Sie diese Implementierungen PolicyComparator verwenden, um dies zu tun.

Verwandte Themen