Здесь нет правильного ответа.Только вы, ваши коллеги и ваша компания знают, как и где используется AbstractAgent, и как его изменение влияет на различные команды, отделы или клиентов.Решения о том, где размещать код, часто являются более политическими и социальными, чем обусловленные выбором дизайна «чистой комнаты».
С чисто кодовой точки зрения я поддерживаю радикальный рефакторинг: избавьтесь от ВСЕХ дублирующего кода во ВСЕХ подклассахAbstractAgent, и переместите всех в новый getFilePath () в AbstractAgent.
Но у вас может не быть полномочий сделать это, и вы можете получить откат.Или, может быть, getFilePath () иногда немного отличается (вам не совсем ясно). В этом случае любой сделанный вами выбор кажется компромиссом.Ваш обозреватель кода может настаивать на 'getFilePath2 ()' в AbstractAgent, потому что он проливает свет на проблему несовершенного повторного использования кода и чувствует, что он "загрязняет" суперкласс временным обходным решением, которое должно быть действительно решено путем привлечения всехна сегодняшний день с действительно общим кодом в суперклассе.Кто знает.
Возможно, метод статической утилиты будет лучшим выбором до тех пор, пока не будет выполнен полный рефакторинг.