Setelah Liskov Substitution, prinsip selanjutnya yang akan kita pelajari adalah Interface segregation. Prinsip Interface Segregation adalah salah satu dari prinsip yang dikemukakan oleh Robert C.Martin dalam bukunya yang berjudul Design Principle. Meskipun prinsip-prinsip tersebut sudah beberapa tahun usianya, prinsip-prinsip ini tetap penting seperti saat pertama kali ia rilis. 

Interface Segregation Principle (ISP)


"Clients should not be forced to depend upon interfaces that they do not use." (Robert Cecil Martin)


Prinsip ini sendiri bertujuan untuk mengurangi jumlah ketergantungan sebuah class terhadap interface class yang tidak dibutuhkan. Faktanya, class memiliki ketergantungan terhadap class lainnya. Jumlah ketergantungan dari fungsi pada sebuah interface class yang dapat diakses oleh class tersebut harus dioptimalkan atau dikurangi. Mengapa penting? Terkadang ketika kita membuat sebuah class dengan jumlah fungsi dan properti yang banyak, class lain yang bergantung pada class tersebut hanya membutuhkan satu atau dua fungsi dari class tersebut. Ketergantungan antar class akan semakin bertambah seiring bertambahnya jumlah fungsi dan properti dari class yang dibutuhkan. Lalu bagaimana cara mengatasinya? 

Pada saat kita membuat sebuah sistem, pasti kita pernah membuat sebuah class yang memiliki atau mengimplementasikan beberapa public interface dan interface-interface tersebut juga digunakan dan di implementasi oleh class lainnya dalam sistem kita. class-class yang kita buat ini terkadang hanya membutuhkan beberapa fungsi yang ada pada interface tersebut sehingga menurut aturan prinsip interface segregation hal ini kurang baik. Tapi tenang, ketika prinsip interface segregation diterapkan, setiap class-class akan mengimplementasi beberapa interface class yang lebih kecil sesuai dengan fungsi-fungsi yang dibutuhkan class-class tersebut. 

Hal ini berarti bahwa class-class yang saling bergantung dapat berkomunikasi dengan menggunakan interface yang lebih kecil, mengurangi ketergantungan pada fungsi-fungsi yang tidak digunakan dan mengurangi coupling. Dengan menggunakan interface yang lebih kecil akan memudahkan dalam implementasi, meningkatkan fleksibilitas dan juga kemungkinan untuk digunakan kembali (reuse).



Menarik sekali bukan jika kita berhasil menerapkan prinsip interface segregation dalam sistem kita? Yuk kita lanjutkan belajarnya ke studi kasus pada modul selanjutnya.