Задать вопрос
EvilsInterrupt
@EvilsInterrupt
System programming, Reversing Engineering, C++

Правильно ли я понял принцип одной обязанности в классе?

Читая книгу Фриман и Фриман. Паттерны проектирования увидел прикольный принцип: «Класс должен иметь только одну причину для изменения» это стр. 361 в книге.

Мне хочется чтобы кто-нибудь проверил ход моих мыслей и указал на мои ошибки в рассуждениях, чтобы я мог понять насколько правильно понял этот принцип.

Возьмем к примеру простейший класс:
class CustomFormat
{
public:
  Header1 getHeader1();
  std::vector<Header2> getHeader2Array();
  void load();
  void save();  
};


Мне кажется что основной задачей класса является предоставление методов для работы со значениями заголовков. Но он также имеет и дополнительную задачу: класс имеет методы по чтению\записи.

Вопрос: Я правильно понимаю, что если следовать этому принципу, то мы должны методы load\save вынести в другой класс к примеру в какой-нить CustomFormatSerializer?

Меня не интересуют слова вида: «Вы знаете на практике… ». Меня очень волнует именно вопрос следования этому принципу, а не возможные компромиссы для достижения задач на практичеке.
  • Вопрос задан
  • 2853 просмотра
Подписаться 3 Оценить 2 комментария
Ответ пользователя ertaquo К ответам на вопрос (5)
ertaquo
@ertaquo
Насколько я понимаю, это зависит от глубины разбиения задач. Например, стоит задача — сделать простую рисовалку. Вы можете засунуть все в класс типа CPaintBox. Но можно разбить эту большую задачу на несколько более мелких — работу с кистью, загрузку, сохранение, наложение фильтров. Работу с кистью тоже можно разбить — на работу с формой кисти и на работу с ее цветом.
Ответ написан
Комментировать