Saya telah menemukan banyak istilah "pemrograman ke antarmuka bukan implementasi", dan saya pikir saya agak mengerti apa artinya. Tetapi saya ingin memastikan bahwa saya memahami manfaatnya dan kemungkinan implementasinya.
"Pemrograman ke antarmuka" berarti, jika memungkinkan, seseorang harus merujuk ke tingkat kelas yang lebih abstrak (antarmuka, kelas abstrak, atau terkadang superclass), daripada merujuk pada implementasi konkret.
Contoh umum di Jawa, adalah menggunakan:
List myList = new ArrayList();
bukannya ArrayList myList = new ArrayList();
.
Saya punya dua pertanyaan tentang ini:
Saya ingin memastikan bahwa saya memahami manfaat utama dari pendekatan ini. Saya pikir manfaatnya kebanyakan fleksibilitas. Mendeklarasikan objek sebagai referensi tingkat lebih tinggi, daripada implementasi konkret, memungkinkan lebih banyak fleksibilitas dan pemeliharaan sepanjang siklus pengembangan dan seluruh kode. Apakah ini benar? Apakah fleksibilitas merupakan manfaat utama?
Apakah ada lebih banyak cara 'pemrograman ke antarmuka'? Atau "mendeklarasikan variabel sebagai antarmuka daripada implementasi konkret" satu-satunya implementasi konsep ini?
Saya tidak berbicara tentang Java construct Interface . Saya berbicara tentang prinsip OO "pemrograman ke antarmuka, bukan implementasi". Dalam prinsip ini, "antarmuka" dunia mengacu pada "supertipe" dari suatu kelas - antarmuka, kelas abstrak, atau superclass sederhana yang lebih abstrak dan lebih konkret daripada subkelas yang lebih konkret.