Принцип единой ответственности может применяться на нескольких уровнях. Уровень метода, уровень класса и даже уровень обслуживания (думая о микросервисах).
На уровне метода функция publi c add () применяется к SRP, если она выполняет только одно действие, добавляя числа. Он не должен отвечать, например, за синтаксический анализ команды добавления из командной строки консоли или вызова REST или чего-то еще, эта ответственность должна быть помещена в другое место.
Класс Calculator несет ответственность за выполнение различных видов вычислений, здесь добавляем, вычитаем и т.д. c. Но он не несет ответственности, например, за команды синтаксического анализа или результаты рендеринга (например, создание html вывода для отображения).
И, учитывая уровень обслуживания, служба заказа должна нести ответственность за все, что касается обработки заказы или предоставление информации о заказах. Но он не должен нести ответственность за хранение продуктов и прочего.
Примечание: метод publi c класса, который внутренне использует частные методы, все равно может следовать SRP, если общая задача метода придерживается одного обязанность. Например, метод publi c div () может использовать частный метод для проверки и обработки нежелательного деления на ноль. Этот частный метод снова соответствует SRP, поскольку он делает только одно - обрабатывает деление на ноль, но все же вписывается в общую картину на уровне выше.