Wikipedia mengatakan
"entitas perangkat lunak (kelas, modul, fungsi, dll.) harus terbuka untuk ekstensi, tetapi ditutup untuk modifikasi"
Kata fungsi menarik perhatian saya, dan sekarang saya bertanya-tanya apakah kita dapat berasumsi bahwa menciptakan kelebihan untuk suatu metode dapat dianggap sebagai contoh prinsip Terbuka / tertutup atau tidak?
Izinkan saya menjelaskan sebuah contoh. Pertimbangkan bahwa Anda memiliki metode di lapisan layanan Anda, yang digunakan di hampir 1000 tempat. Metode ini mendapatkan userId dan menentukan apakah pengguna adalah admin atau tidak:
bool IsAdmin(userId)
Sekarang pertimbangkan bahwa di suatu tempat itu perlu untuk menentukan apakah pengguna adalah admin atau tidak, berdasarkan nama pengguna, bukan userId. Jika kami mengubah tanda tangan dari metode yang disebutkan di atas, maka kami telah memecahkan kode di 1000 tempat (fungsi harus ditutup untuk modifikasi). Dengan demikian kita dapat membuat kelebihan untuk mendapatkan nama pengguna, menemukan userId berdasarkan nama pengguna, dan metode asli:
public bool IsAdmin(string username)
{
int userId = UserManager.GetUser(username).Id;
return IsAdmin(userId);
}
Dengan cara ini, kami telah memperluas fungsi kami melalui membuat kelebihan untuk itu (fungsi harus terbuka untuk ekstensi).
Apakah ini contoh prinsip Terbuka / tertutup?