Читая книгу Фриман и Фриман. Паттерны проектирования увидел прикольный принцип: «Класс должен иметь только одну причину для изменения» это стр. 361 в книге.
Мне хочется чтобы кто-нибудь проверил ход моих мыслей и указал на мои ошибки в рассуждениях, чтобы я мог понять насколько правильно понял этот принцип.
Возьмем к примеру простейший класс:
class CustomFormat
{
public:
Header1 getHeader1();
std::vector<Header2> getHeader2Array();
void load();
void save();
};
Мне кажется что основной задачей класса является предоставление методов для работы со значениями заголовков. Но он также имеет и дополнительную задачу: класс имеет методы по чтению\записи.
Вопрос: Я правильно понимаю, что если следовать этому принципу, то мы должны методы load\save вынести в другой класс к примеру в какой-нить CustomFormatSerializer?
Меня не интересуют слова вида: «Вы знаете на практике… ». Меня очень волнует именно вопрос следования этому принципу, а не возможные компромиссы для достижения задач на практичеке.