Страницы

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

пятница, 27 декабря 2019 г.

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

#java #c_sharp #ооп #шаблоны_проектирования


Допустим есть класс, который записывает свое состояние на диск, а при инициализации
подгружает обратно. Логично делать это в конструкторе. Но с точки зрения unit тестов,
это криво. Если я выношу это в метод initialize, то я обязываю внешний код дергать
еще и его, потом это плодит разные статусы initializing итд итп.

Правильно ли я понимаю, что хорошим дизайном будет следующее:


какая-то фабрика, которая отвечает за создание и инициализацию класса
объект "LastStateInfo"
в класс добавляется дополнительный конструктор, который принимает LastStateInfo


Есть ли какие-то типовые подходы? Как это называется? Как это можно нагуглить? 
    


Ответы

Ответ 1



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

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

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