Твердые принципы действительно твердые? - PullRequest
38 голосов
/ 08 июня 2010

Шаблон дизайна, который обозначает первая буква в этом акрониме, - это принцип единой ответственности. Вот цитата:

принцип единоличной ответственности утверждает, что каждый объект должен иметь единственная ответственность, и это ответственность должна быть полностью инкапсулированный классом.

Это просто и понятно, пока мы не начнем кодировать. Предположим, у нас есть класс с четко определенной единственной ответственностью. Чтобы сериализовать экземпляры класса, нам нужно добавить в этот класс специальные атрибуты. Так что теперь у класса есть другая ответственность. Разве это не нарушает ПСП?

Давайте посмотрим другой пример - реализация интерфейса. Когда мы реализуем интерфейс, мы просто добавляем другие обязанности, например, распределяем его ресурсы или сравниваем его экземпляры или что-то подобное.

Итак, мой вопрос. Можно ли строго придерживаться SRP? Как это можно сделать?

Ответы [ 11 ]

0 голосов
/ 08 июня 2010

Изменяя ваше определение «единой ответственности» - принципы SOLID достаточно ликвидны и (как и другие броские сокращения) не означают того, что они, кажется, означают.

Они могут использоваться в качестве контрольного списка или шпаргалки, но не в качестве полных руководств и, конечно, не в качестве учебного материала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...