Я сталкивался с такими же вопросами несколько семестров назад.Важность и основная концепция понимания SRP также заключается в понимании избыточного кода.
Сначала вы должны ознакомиться с концепцией избыточного кода.Давайте рассмотрим ОЧЕНЬ простой пример:
Actor1 использует класс A:
, который несет ответственность за ТОЛЬКО вычисление заданных входных данных от Actor1 и Actor1, а затем возвращает результат.
Actor2 будет использовать класс B:
, который отвечает за вычисление чего-то другого с учетом конкретных входных данных от Actor2, а затем возвращает результат.Однако при разработке класса мы понимаем, что часть вычислений содержит тот же код, что и класс A.
В этом примере класс B будет содержать избыточный код, если мы продолжим нашу разработку, поскольку он будет содержать дублированный код,который уже существует в классе A.
Решение:
В соответствии с SOLID (принцип Open / Closed) нам НЕ разрешено возвращаться и изменять класс A и разрешатькласс B, чтобы использовать это.Причина в том, что нам не разрешено удалять / изменять любой код, существующий в классе А. Причина в том, что мы можем отделить код от Actor1 или другого неизвестного актера.
Поэтому вместо этого мы пишем класс C, который расширяет классA, поэтому конкретные вычисления могут быть использованы через класс C, и, следовательно, могут быть использованы как классом B, так и любыми другими калибрами в будущем.
Надеюсь, это ответило на ваш вопрос!