Ini adalah contoh klasik tentang bagaimana orang memutuskan untuk melanggar Prinsip Subtitusi Liskov. Saya sangat tidak menyarankannya tetapi akan mendorong kemungkinan solusi yang berbeda:
- Mungkin kelas yang Anda tulis tidak menyediakan fungsionalitas yang ditentukan antarmuka jika tidak menggunakan semua anggota antarmuka.
- Atau, antarmuka itu dapat melakukan banyak hal dan dapat dipisahkan berdasarkan Prinsip Pemisahan Antarmuka.
Jika yang pertama adalah kasus untuk Anda, hanya saja jangan mengimplementasikan antarmuka pada kelas itu. Anggap saja seperti soket listrik di mana lubang arde tidak perlu sehingga tidak benar - benar menempel ke arde. Anda tidak memasukkan apa pun dengan ground dan bukan masalah besar! Tapi begitu Anda menggunakan sesuatu yang membutuhkan tanah - Anda bisa mengalami kegagalan yang spektakuler. Lebih baik tidak meninju lubang tanah palsu. Jadi, jika kelas Anda tidak benar - benar melakukan apa yang diinginkan antarmuka, jangan mengimplementasikan antarmuka.
Berikut adalah beberapa bit cepat dari wikipedia:
Prinsip Substitusi Liskov dapat dengan mudah dirumuskan sebagai, "Jangan memperkuat pra-kondisi, dan jangan melemahkan pasca-kondisi".
Secara lebih formal, prinsip substitusi Liskov (LSP) adalah definisi khusus dari hubungan subtyping, yang disebut subtyping perilaku (kuat), yang awalnya diperkenalkan oleh Barbara Liskov dalam sebuah pidato konferensi konferensi tahun 1987 yang berjudul Abstraksi dan hirarki data. Ini adalah hubungan semantik daripada hanya sintaksis karena bermaksud untuk menjamin interoperabilitas semantik dari jenis dalam suatu hierarki , [...]
Untuk interoperabilitas semantik dan substitusi antara implementasi berbeda dari kontrak yang sama - Anda membutuhkan mereka semua untuk berkomitmen pada perilaku yang sama.
Prinsip Segregasi Antarmuka berbicara pada gagasan bahwa antarmuka harus dipisahkan menjadi set yang kohesif sehingga Anda tidak memerlukan antarmuka yang melakukan banyak hal yang berbeda ketika Anda hanya menginginkan satu fasilitas. Pikirkan lagi antarmuka soket listrik, itu bisa memiliki termostat juga, tetapi itu akan membuat lebih sulit untuk memasang soket listrik dan mungkin membuatnya lebih sulit untuk digunakan untuk keperluan non-pemanasan. Seperti soket listrik dengan termostat, antarmuka besar sulit diimplementasikan dan sulit digunakan.
Prinsip pemisahan antarmuka (ISP) menyatakan bahwa tidak ada klien yang harus dipaksa untuk bergantung pada metode yang tidak digunakannya. [1] ISP membagi antarmuka yang sangat besar menjadi yang lebih kecil dan lebih spesifik sehingga klien hanya perlu tahu tentang metode yang menarik bagi mereka.