Aplikasi Kovarian dan Kontravarian Dunia Sebenar
Kovarian dan kontravarian ialah alat yang berkuasa dalam pengaturcaraan generik, meningkatkan kedua-dua fleksibiliti dan keselamatan jenis. Walaupun mudah difahami dalam teori, aplikasi praktikalnya mungkin kurang jelas. Mari kita terokai contoh konkrit.
Pertimbangkan sistem yang menguruskan data berkaitan buah-buahan. Kami mempunyai kelas asas Fruit
dan kelas terbitan Apple
. Cabarannya ialah untuk mencipta antara muka koleksi yang boleh memuatkan pelbagai jenis buah sambil mengekalkan keselamatan jenis.
Dengan kovarian, kami mentakrifkan antara muka yang mewakili koleksi buah-buahan (ICovariant<Fruit>
). Kelas (Covariant<Apple>
) yang melaksanakan antara muka ini boleh menyimpan koleksi epal. Yang penting, contoh Covariant<Apple>
ini boleh dianggap sebagai ICovariant<Fruit>
kerana epal ialah subjenis buah-buahan. Ini menunjukkan pemeliharaan perhubungan subjenis.
Sebaliknya, contravariance berperanan apabila berurusan dengan pengguna buah-buahan. Kami akan membuat antara muka yang mewakili koleksi pengguna buah-buahan (IContravariant<Fruit>
). Kelas (Contravariant<Apple>
) yang melaksanakan antara muka ini mungkin menampung pengguna yang direka khusus untuk epal. Di sini, kami memanfaatkan fakta bahawa pengguna epal juga boleh mengambil buah-buahan (kerana epal adalah buah-buahan), membolehkan penurunan yang selamat daripada koleksi pengguna buah-buahan kepada koleksi pengguna epal.
Kod yang disertakan (tidak ditunjukkan di sini, tetapi dirujuk dalam teks asal) menyediakan demonstrasi praktikal. Ia mentakrifkan antara muka ICovariant<T>
dan IContravariant<T>
, bersama dengan kelas pelaksana masing-masing Covariant<T>
dan Contravariant<T>
. Kelas ilustrasi TheInsAndOuts
mempamerkan lagi konsep ini dalam tindakan.
Menguasai kovarians dan kontravarian membolehkan pembangun menulis kod yang lebih mantap dan selamat jenis untuk pelbagai aplikasi, termasuk reka bentuk koleksi, hierarki warisan dan algoritma generik.
Atas ialah kandungan terperinci Bagaimanakah Kovarians dan Kontravarian Meningkatkan Keselamatan Jenis dalam Pengaturcaraan Dunia Sebenar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!