Принцип єдиної відповідальності
Принцип єдиної відповідальності[1] (англ. Single Responsibility Principle, SRP) — важливий принцип об'єктно-орієнтованого програмування, який означає, що клас має бути створений для виконання лише однієї задачі, яку він повинен повністю інкапсулювати. Отже, всі сервіси цього класу мають бути повністю підпорядковані її виконанню. Роберт Мартін, засновник терміна, висловлює принцип так: «Клас повинен мати лише одну причину для змін»[2], хоча через плутанину навколо слова «причина» він також заявив: «Цей принцип стосується людей»[3]. У деяких своїх виступах він також стверджує, що принцип стосується, зокрема, ролей чи акторів. Наприклад, хоча вони можуть бути однією людиною, роль бухгалтера відрізняється від адміністратора бази даних. Отже, кожен модуль повинен відповідати за кожну роль[1]. ІсторіяТермін був запроваджений Робертом Мартіном в однойменній статті як частина його принципів об'єктно-орієнтованого програмування, що поширився завдяки його книзі «Швидка розробка програм. Принципи, приклади, практика». Мартін описав її як засновану на принципі зв'язності, сформульованого Томом ДеМарко в його книзі «Structured Analysis and Systems Specification»[4]. Приклад порушення SRPНехай в системі є клас, що представляє в ній робітника: public class Employee {
private String name;
// інші поля
public String getName() {
return name;
}
// інші методи
public void printReport() {
// код для друкування звіту
}
}
Крім цього, існує можливість друкувати звіт про робітника за допомогою методу
Для прикладу, розглянемо випадок зміни формату звіту. Це змусить програмістів редагувати
Очевидно, що проблема полягає в багатоцільовому public class Employee {
private String name;
// інші поля
public String getName() {
return name;
}
// інші методи
}
public class Reporter {
public void printReport(Employee worker) {
// код для друкування звіту
}
}
Переваги та недолікиСеред плюсів варто відмітити такі:
Мінус використання полягає в зростанні кількості класів, що приводить до зростання складності системи. ВикористанняSOLID — буква «S» означає принцип єдиного обов'язку (англ. Single Responsibility Principle). Див. такожПримітки
Посилання
|