Перегрузка имени метода и параметр ссылки на себя

У меня есть несколько клиентских классов A, B и C, которым необходимо использовать операцию op(), которая зависит от типа вызывающего объекта и определяется другим классом D.

Есть несколько решений:

  1. D предоставляет разные методы для каждого клиента, но ответственность за выбор правильной реализации лежит на клиенте:
    UML
  2. перегружая имя метода в D и передавая ссылку на себя клиента для управления привязкой:
    UML
  3. введение шаблона стратегии.
  4. ...

Есть ли хорошая практика, почему я должен избегать второго решения?


person Tieco    schedule 15.09.2016    source источник
comment
Есть ли какая-то хорошая практика, почему мне следует избегать второго решения? Как вы думаете, почему вам следует избегать его?   -  person Tom    schedule 15.09.2016
comment
@ Том, я не знаю. Вот почему я спрашиваю...   -  person Tieco    schedule 15.09.2016
comment
Я хотел бы увидеть код здесь. Есть ли причина, по которой op() находится в отдельном классе, а не только в трех предыдущих классах?   -  person markspace    schedule 15.09.2016
comment
comment
@markspace Кода нет. Это просто гипотетическая ситуация, которую я создал, потому что я готовлюсь к инженерному экзамену ПО.   -  person Tieco    schedule 15.09.2016
comment
@Tom в вопросе, который вы связали, я не могу найти, есть ли причина избегать передачи ссылки на себя в случаях, подобных тому, который я описал, даже в этом случае я согласен и понимаю, каковы преимущества использования перегрузки   -  person Tieco    schedule 15.09.2016