Как заставить принцип единой ответственности работать с моим классом стратегии?

Как мне заставить мой "сложный" класс стратегии выполнять принцип единой ответственности? Есть ли другой шаблон, который я могу применить вместо этого?

Я думал о шаблоне 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?

0 ответов

Другие вопросы по тегам