1. Prinsip Segregasi Antarmuka (ISP: Prinsip Segregasi Antarmuka)
Definisi: Lebih baik menggunakan beberapa antarmuka khusus daripada menggunakan satu antarmuka umum. Bisa juga dikatakan: Bangun antarmuka tunggal, jangan membangun antarmuka yang membengkak.
Dua definisi ISP:
◇ “Klien tidak boleh dipaksa untuk bergantung pada antarmuka yang tidak mereka gunakan”
Klien tidak boleh bergantung pada antarmuka yang tidak diperlukannya.
◇ “Ketergantungan satu kelas ke kelas lainnya harus bergantung pada antarmuka sekecil mungkin”
Ketergantungan satu kelas pada kelas lain harus didasarkan pada antarmuka terkecil. (dari klien)
Antarmuka dan peran: Memahami antarmuka sebagai kumpulan karakteristik semua metode yang disediakan oleh suatu kelas. Dengan cara ini, pembagian antarmuka menghasilkan pembagian tipe. Jadi sebuah antarmuka harus mewakili hanya satu peran, bukan melayani banyak peran.
Kontaminasi Antarmuka: Yang disebut kontaminasi antarmuka adalah penambahan tanggung jawab yang tidak perlu pada antarmuka. Polusi antarmuka akan menimbulkan masalah pemeliharaan dan penggunaan kembali. Masalah yang paling umum adalah untuk menggunakan kembali antarmuka yang tercemar, kita terpaksa menerapkan dan memelihara metode yang tidak perlu. Oleh karena itu, kita harus memisahkan program klien, dan memisahkan program klien berarti memisahkan antarmuka.
Cara mengimplementasikan antarmuka terpisah:
Umumnya ada dua cara untuk memisahkan antarmuka:
1) Gunakan delegasi untuk memisahkan antarmuka. (Pemisahan melalui Delegasi)
Cukup delegasikan permintaan tersebut ke kelas implementasi antarmuka lain untuk menyelesaikan tanggung jawab yang diperlukan, yaitu pola adaptor (Adapter).
2) Gunakan pewarisan berganda untuk memisahkan antarmuka. (Pemisahan melalui Banyak Warisan.)
Metode ini mengimplementasikan banyak antarmuka untuk menyelesaikan tanggung jawab yang diperlukan.
Kedua metode mempunyai kelebihan dan kekurangan masing-masing. Biasanya kita harus mempertimbangkan opsi terakhir terlebih dahulu, dan memilih opsi pertama jika melibatkan konversi tipe.
Artikel ini berasal dari blog CSDN. Harap sebutkan sumbernya saat mencetak ulang: http://blog.csdn.net/scelong/archive/2009/12/18/5031030.aspx
-