Довольно забавно, я сейчас работаю над проектом, почти таким же, как этот.
Простой ответ: Хорошо, во-первых, это не конец света, если метод некоторое время находится в неправильном классе!Если у вас все классы покрыты тестами, , где , функции живут, важно, но их можно плавно менять, если вы, король своего домена, сочтете нужным.
Если вы не тестирую это, ну, это было бы моим первым предложением.Многие более умные люди, чем я, отмечали, как TDD и тестирование могут помочь естественным образом привести ваши классы к лучшему дизайну.
Более длинный ответ: Вместо того, чтобы искать шаблоны для применения к дизайну, мне нравится продумывать это так: по каким причинам каждый из ваших классов должен измениться?Если вы отделите эти причины друг от друга (в этом может помочь TDD), то вы начнете видеть, что шаблоны проектирования естественным образом возникают из вашего кода.
Вот несколько причин, по которым я мог бы подумать за несколько проходов, читая ваш вопрос:
- Файл данных изменяет формат / добавляет столбцы
- Вы найдетелучший алгоритм сопоставления или: «теперь мы хотим выполнить фильтрацию и по номеру мобильного телефона»
- Вас также попросят сделать так, чтобы он совпадал с файлами xml / yaml / etc
- Вас попросилисохраните его в новом формате / местоположении
Хорошо, поэтому, если реализация любого из них потребует добавления где-то оператора if, возможно, это шов для подклассов, реализующихОбщий интерфейс.
Также предположим, что вы хотите сохранить созданный файл в новом месте.Это одна из причин для изменения, и она не должна пересекаться с необходимостью изменить стратегию слияния.Если эти две части относятся к одному и тому же классу, у этого класса теперь есть две обязанности, и это нарушает принцип единой ответственности .
Итак, это очень краткий пример, чтобы углубиться в подробности с хорошим дизайном ОО, ознакомьтесь с принципами SOLID .Вы не ошибетесь, изучая их и стараясь применять их с осторожностью в своих проектах ОО.