2008-09-17 3 views
2

В приложении, которое я пишу, у меня есть класс Policy. Существует 4 разных типа Политики. Каждая политика увязывается с другими политиками, такими как PolicyA> PolicyB> PolicyC> PolicyD.Чей это ответственность, так или иначе?

Кто несет ответственность за реализацию логики, чтобы определить, является ли одна политика более великой, чем другая? Моя первоначальная мысль состоит в том, чтобы перегрузить операторы> и < и реализовать логику в самом типе политики.

Это нарушает SRP?

ответ

6

Я бы подумал, что класс PolicyComparer должен выполнить оценку.

0

Я думаю, что вы на правильном пути с перегрузкой, однако расширение это, очевидно, намного больше

если (A> B || B> C || C> D) ...

0

Вы также можете сохранить атрибут PolicyWeight в своем классе, являющийся простым встроенным типом (int, unsigned int, ...), который затем можно легко сравнить.

0

Certianly специальный класс сравнения. Если вам когда-либо понадобится предоставить дополнительную логику (например, есть два или три разных способа сравнения политик), этот подход позволит вам получить большую гибкость (не достижимая с помощью перегрузок операторов).

0

Вы хотите класс PolicyComparator. Если вы хотите переопределить < и>, это нормально, но сделайте это, переопределив базовый класс Policy, и для реализации этих реализаций используйте PolicyComparator.

Смежные вопросы