[#] Принцип единственной ответственности: фундамент декомпозиции
habrabot(difrex,1) — All
2017-10-09 17:00:07


![][1]
Сейчас об этом принципе слышал любой, кто занимается программированием. Чуть меньше тех, кто думает, что его знает. Гораздо меньше тех, кто действительно умеет его использовать. Я постараюсь объяснить суть, назначение и применение этого принципа как можно проще и короче.



## Определение {#opredelenie}



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



### Пример {#primer}



Lazy<T> — обертка для объекта, чье создание откладывается до первого обращения к нему.



### Антипример {#antiprimer}



Синглтон — класс, не допускающий создания более одного экземпляра. В этом описании нет союзов, но оно неполное — синглтон всегда имеет основную функциональность помимо контроля единственности собственного экземпляра. Синглтон — класс, реализующий полезную функциональность и контролирующий единственность собственного экземпляра. Теперь описание исчерпывающее, но имеет союз "и" — у синглтона два разных назначения. Он не соответствует принципу единственной ответственности.



### Еще антипример {#esche-antiprimer}



Локатор сервисов — позволяет получить доступ к любому сервису приложения. Это описание без исчерпывающего списка сервисов заведомо неполное.



## Назначение {#naznachenie}



Упрощение создания, анализа и модификации программных систем.

[Читать дальше →][2]

[1]: https://habrastorage.org/webt/59/da/c9/59dac97d7efff285825291.jpeg
[2]: https://habrahabr.ru/post/338064/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut