SOLID
  • Вступление
  • SRP
  • OCP
  • LSP
  • ISP
  • DIP
Powered by GitBook
On this page

Was this helpful?

SRP

Принцип единственной ответственности | Single Responsibility Principle | SRP

PreviousВступлениеNextOCP

Last updated 6 years ago

Was this helpful?

SRP звучит так:

Существует лишь одна причина, приводящая к изменению класса.

Ответственность – это причина изменения кода.

Если при изменении кода, отвечающего за одну ответственность, в приложении появляются исправления кода, отвечающего за другую ответственность – есть нарушения SRP.

Антипаттерн – божественный объект.

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

Пример нарушения SRP

class Employee {
    /**
     * 1-я ответственность
     *
     * Бизнес-логика
     */
    calculatePay () {
        // ...
    }

    /**
     * 2-я ответственность
     *
     * Управление сохранением
     */
    save () {
        // ...
    }
}

От класса Employee зависят сразу 2 актора:

  • бухгалтерия (метод calculatePay)

  • администраторы БД (метод save)

Актор - лицо, заинтересованное в изменении кода.

Бизнес-логика по природе своей изменяется довольно часто. Механизмы сохранения изменяются гораздо реже и совсем по другим причинам.

Принцип единственной ответственности