Как заставить принцип единой ответственности работать с моим классом стратегии?
Как мне заставить мой "сложный" класс стратегии выполнять принцип единой ответственности? Есть ли другой шаблон, который я могу применить вместо этого?
Я думал о шаблоне Decorator, который может добавить больше ответственности / операций к моему "алгоритму", но он, похоже, не подходит.
Видеть это SimpleStrategy
учебный класс. Он получает кэшированные и последние записи, сравнивает их и обновляет, если требуется, а затем выполняет любую постобработку.
class SimpleStrategy {
private DbRecordFetcher dbRecordFetcher;
private LatestRecordFetcher latestRecordFetcher;
private RecordComparator recordComparator;
private DataUpdater dataUpdater;
private PostProcessor postProcessor;
public void process(Input input) {
I cached = dbRecordFetcher.fetch(input);
I latest = latestRecordFetcher.fetch(input);
boolean isChanged = recordComparator.compare(cached, latest);
if (isChanged) {
dataUpdater.update(input, latest);
}
postProcessor.process(input, latest);
}
}
Все классы, которые SimpleStrategy
состоит из интерфейсов, поэтому я могу внедрять различные реализации, например, для получения базы данных и последних записей.
Как мне провести рефакторинг, чтобы он соответствовал SRP?