У Вікіпедії йдеться
"програмні об'єкти (класи, модулі, функції тощо) повинні бути відкритими для розширення, але закритими для модифікації"
Слово функції зловила мої очі, і тепер мені цікаво , якщо можна припустити , що створення перевантаження для методу можна розглядати як приклад відкритого / закритого принципу чи ні?
Дозвольте пояснити приклад. Подумайте, що у вашому сервісному шарі є метод, який використовується майже в 1000 місцях. Метод отримує userId і визначає, чи є він адміністратором чи ні:
bool IsAdmin(userId)
Тепер подумайте, що десь потрібно визначити, користувач є адміністратором чи ні, виходячи з імені користувача, а не userId. Якщо ми змінимо підпис вищезгаданого методу, ми порушили код у 1000 місцях (функції слід закрити для модифікації). Таким чином, ми можемо створити перевантаження для отримання імені користувача, знайти userId на основі імені користувача та оригінального методу:
public bool IsAdmin(string username)
{
int userId = UserManager.GetUser(username).Id;
return IsAdmin(userId);
}
Таким чином, ми розширили нашу функцію, створивши для неї перевантаження (функції повинні бути відкриті для розширення).
Це приклад відкритого / закритого принципу?