Шаблон дизайна, обозначенный первой буквой в этом аббревиатуре, является принципом единой ответственности. Вот цитата:Являются ли СОВРЕМЕННЫЕ принципы действительно прочными?
единый принцип ответственности гласит, что каждый объект должен быть единую ответственность, и что ответственность должна быть полностью инкапсулированный классом.
Это просто и понятно, пока мы не начнем код. Предположим, что у нас есть класс с четко определенной ответственностью. Чтобы сериализовать экземпляры класса, нам нужно добавить специальные атрибуты к этому классу. Итак, теперь у класса есть другая ответственность. Разве это не нарушает СРП?
Давайте посмотрим другой пример - реализацию интерфейса. Когда мы реализуем интерфейс, мы просто добавляем другие обязанности, скажем, распоряжаться своими ресурсами или сравнивать их экземпляры или что-то еще.
Так что мой вопрос. Можно ли строго придерживаться SRP? Как это можно сделать?
Сообщество Wiki? –
@C. Росс: Я думаю, что это достаточно конкретный факт, что он не принадлежит к записи в Community Wiki. –
Если вы определяете ответственность класса как «делать то, что он кодирует», то SRP является самореализующимся. Так что это действительно зависит от того, как вы определяете «ответственность». «Реализуйте характеристики X, включая сериализацию, сравнение, ...» Я думаю, что это была бы единственная ответственность. Единая ответственность =/= единая функциональность. –