Страницы

Поиск по вопросам

среда, 5 декабря 2018 г.

Паттерн для инициализации состояния класса вне конструктора

Допустим есть класс, который записывает свое состояние на диск, а при инициализации подгружает обратно. Логично делать это в конструкторе. Но с точки зрения unit тестов, это криво. Если я выношу это в метод initialize, то я обязываю внешний код дергать еще и его, потом это плодит разные статусы initializing итд итп.
Правильно ли я понимаю, что хорошим дизайном будет следующее:
какая-то фабрика, которая отвечает за создание и инициализацию класса объект "LastStateInfo" в класс добавляется дополнительный конструктор, который принимает LastStateInfo
Есть ли какие-то типовые подходы? Как это называется? Как это можно нагуглить?


Ответ

Для сохранения состояния есть паттерн Хранитель (Momento). Сам класс не должен реализовывать алгоритм сохранения/восстановления состояния (обратное нарушает принципы SOLID, а именно SRP). Тогда и проблем с юнит-тестами не будет. Вместо зависимостей подсуните моки/стабы.

Комментариев нет:

Отправить комментарий