Pertama-tama saya harus menunjukkan fakta yang CustomException
tidak meluas Exception
sehingga 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 String
atau Object
yang 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
CustomException
abstrak
- Tetap
void onError(CustomException ex)
seperti itu
pilihan 2
- Buat
CustomException
antarmuka
- 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.