Принцип единой ответственности для многих методов - PullRequest
0 голосов
/ 11 июля 2020

Как вы можете поддерживать единоличную ответственность за класс, предназначенный для выполнения нескольких задач? Например, если я хочу написать код, представляющий калькулятор, который может складывать, вычитать, умножать и выполнять ряд различных вычислений, как я могу заставить дизайн программного обеспечения придерживаться единой ответственности?

1 Ответ

0 голосов
/ 12 июля 2020

Принцип единой ответственности может применяться на нескольких уровнях. Уровень метода, уровень класса и даже уровень обслуживания (думая о микросервисах).

На уровне метода функция publi c add () применяется к SRP, если она выполняет только одно действие, добавляя числа. Он не должен отвечать, например, за синтаксический анализ команды добавления из командной строки консоли или вызова REST или чего-то еще, эта ответственность должна быть помещена в другое место.

Класс Calculator несет ответственность за выполнение различных видов вычислений, здесь добавляем, вычитаем и т.д. c. Но он не несет ответственности, например, за команды синтаксического анализа или результаты рендеринга (например, создание html вывода для отображения).

И, учитывая уровень обслуживания, служба заказа должна нести ответственность за все, что касается обработки заказы или предоставление информации о заказах. Но он не должен нести ответственность за хранение продуктов и прочего.

Примечание: метод publi c класса, который внутренне использует частные методы, все равно может следовать SRP, если общая задача метода придерживается одного обязанность. Например, метод publi c div () может использовать частный метод для проверки и обработки нежелательного деления на ноль. Этот частный метод снова соответствует SRP, поскольку он делает только одно - обрабатывает деление на ноль, но все же вписывается в общую картину на уровне выше.

...