Mari kita atasi percanggahan yang jelas antara perkara 22 dan 41 buku:
Item 22: "Jika anda tidak mahu menentukan jenis, jangan gunakan antara muka."
Item ini mencadangkan anda tidak boleh menggunakan antara muka untuk perkara yang tidak mewakili jenis sebenar atau fungsi konkrit. Sebagai contoh, menggunakan antara muka hanya untuk menyimpan pemalar bukanlah amalan yang baik. Antara muka harus digunakan untuk menentukan kontrak atau gelagat yang harus dilaksanakan oleh kelas.
Item 41: “Jika anda benar-benar mahu menentukan jenis, gunakan antara muka.”
Item ini bercakap tentang menggunakan antara muka, khususnya antara muka penanda, untuk mentakrifkan jenis yang mengkategorikan atau menandakan kelas dengan cara yang boleh disemak pada masa penyusunan. Antara muka penanda tidak mentakrifkan kaedah, tetapi ia masih mentakrifkan jenis logik yang boleh digunakan untuk menyemak gelagat kelas pada masa penyusunan.
Mendamaikan Item
Kunci untuk memahami kedua-dua item ialah perbezaan antara menentukan jenis yang berguna dan menggunakan antara muka dengan sewajarnya.
Item 22 mengatakan untuk mengelak daripada menggunakan antara muka untuk perkara yang tidak mempunyai fungsi atau tingkah laku tertentu yang dikaitkan dengannya. Ideanya ialah antara muka harus digunakan untuk menentukan kontrak yang jelas yang mesti diikuti oleh kelas.
Item 41 mengesyorkan menggunakan antara muka (termasuk penanda) apabila anda ingin menentukan jenis yang mengkategorikan atau menandakan kelas untuk tujuan tertentu dan yang boleh digunakan untuk semakan masa kompilasi.
Aplikasi Praktikal
Item 22: Elakkan perkara ini:
public interface Constants { String SOME_CONSTANT = "value"; int ANOTHER_CONSTANT = 42; }
Ini tidak menentukan jenis atau tingkah laku; ia hanya bekas pemalar, yang merupakan penggunaan buruk antara muka.
Item 41: Gunakan antara muka untuk menandakan jenis:
public interface PhysicalProduct { // Interface marcadora sem métodos } public class Book implements PhysicalProduct { // Implementação da classe que indica que é um produto físico }
Di sini, antara muka PhysicalProduct mentakrifkan jenis logik yang boleh disemak dan digunakan untuk tujuan tertentu, seperti pengiraan penghantaran, memastikan hanya produk fizikal sahaja yang dipertimbangkan.
Kesimpulan
Kedua-dua item saling melengkapi dengan memberikan panduan tentang cara dan bila untuk menggunakan antara muka dengan sewajarnya. Premisnya ialah antara muka harus digunakan untuk menentukan jenis yang bermakna dan kontrak yang jelas, sama ada melalui kaedah yang mentakrifkan tingkah laku atau sebagai penanda yang mengkategorikan kelas dengan cara yang logik dan berguna.
Atas ialah kandungan terperinci Refleksi pada item dan buku. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!