Pertama-tama saya harus menunjukkan fakta yang CustomExceptiontidak meluas Exceptionsehingga tidak benar-benar sebuah Exception.
Yang mengatakan:
Jika Anda tidak peduli dengan Prinsip Ketergantungan Inversi , maka biarkan apa adanya. Sangat OK untuk antarmuka bergantung pada kelas beton, misalnya banyak antarmuka bergantung pada Stringatau Objectyang kelas beton . Masalahnya adalah kita cenderung percaya bahwa kelas-kelas yang termasuk dalam Java SDK lebih stabil (kurang rentan terhadap perubahan pemecah kode) daripada yang kita tulis.
Di sisi lain:
Jika Anda ingin mengikuti DIP (yang memiliki banyak manfaat dan rekomendasi saya), maka Anda harus melakukan salah satu dari dua hal berikut:
Pilihan 1
- Buat
CustomExceptionabstrak
- Tetap
void onError(CustomException ex)seperti itu
pilihan 2
- Buat
CustomExceptionantarmuka
- Tetap
void onError(CustomException ex)seperti itu
Dengan salah satu opsi tersebut Anda akan menyesuaikan diri dengan DIP, karena antarmuka tidak akan bergantung pada kelas beton apa pun, hanya pada abstraksi.
Dalam aplikasi langsung inversi ketergantungan, abstrak dimiliki oleh lapisan atas / kebijakan. Arsitektur ini mengelompokkan komponen kebijakan yang lebih tinggi / dan abstrak yang mendefinisikan layanan yang lebih rendah bersama-sama dalam paket yang sama. Lapisan tingkat bawah dibuat oleh warisan / implementasi dari kelas atau antarmuka abstrak ini . Martin, Robert C. (2003).
- Pengembangan Perangkat Lunak, Prinsip,> Pola, dan Praktek Perangkat Lunak. Prentice Hall. hlm. 127–131. ISBN 978-0135974445.