Rumah >pembangunan bahagian belakang >C++ >Antaramuka lwn. Kelas: Bilakah Anda Harus Memilih Antara Muka untuk Polimorfisme dan Gandingan Longgar?

Antaramuka lwn. Kelas: Bilakah Anda Harus Memilih Antara Muka untuk Polimorfisme dan Gandingan Longgar?

Susan Sarandon
Susan Sarandonasal
2025-01-08 15:02:45847semak imbas

Interfaces vs. Classes: When Should You Choose Interfaces for Polymorphism and Loose Coupling?

Antara muka dan kelas: Mengapa menggunakan antara muka?

Dalam pengaturcaraan berorientasikan objek, selalunya terdapat perdebatan tentang sama ada untuk menggunakan antara muka atau kelas abstrak semasa mentakrifkan kontrak. Kelas menyediakan warisan dan pelaksanaan kaedah, manakala antara muka hanya menumpukan pada pengisytiharan tingkah laku.

Kelebihan antara muka

Antara muka digunakan terutamanya dalam situasi berikut:

  • Tentukan dan kongsi gelagat biasa antara berbilang kelas yang tidak berkaitan untuk mencapai polimorfisme.
  • Asingkan kod daripada butiran pelaksanaan, buat gandingan longgar dan tingkatkan kebolehskalaan.
  • Tentukan kontrak untuk pelanggan tanpa menyatakan pelaksanaan khusus.

Contoh: Menggunakan antara muka untuk mencapai polimorfisme

Pertimbangkan contoh kod berikut:

<code>public interface ILogInterface
{
    void WriteLog();
}

public class MyClass : ILogInterface
{
    public void WriteLog()
    {
        // 我的自定义日志记录实现
    }
}

public class MyOtherClass : ILogInterface
{
    public void WriteLog()
    {
        // 我的自定义和不同的日志记录实现
    }
}

public class LogManager
{
    public void Log(IlogInterface log)
    {
        // 接受并调用实现 ILogInterface 的任何对象上的 WriteLog(),允许动态绑定。
        log.WriteLog();
    }
}</code>

Dalam contoh ini, kami mentakrifkan antara muka ILogInterface yang menentukan kaedah WriteLog(). MyClass dan MyOtherClass melaksanakan antara muka ini, tetapi menyediakan pelaksanaan WriteLog() mereka sendiri. LogManager kemudian boleh menerima dan memanggil ILogInterface pada mana-mana objek yang melaksanakan WriteLog(), membolehkan pengelogan daripada sumber berbeza dengan gelagat berbeza.

Mengapa tidak melaksanakan kaedah secara langsung dalam kelas?

Melaksanakan kaedah secara langsung dalam kelas memudahkan kod, tetapi ia juga menggabungkan kod klien dengan ketat dengan pelaksanaan. Jika anda kemudiannya memutuskan untuk menukar pelaksanaan, semua rujukan kod klien perlu dicari dan diubah suai. Antara muka menyediakan gandingan longgar, membolehkan anda menambah atau menukar pelaksanaan tanpa menjejaskan kod klien.

Atas ialah kandungan terperinci Antaramuka lwn. Kelas: Bilakah Anda Harus Memilih Antara Muka untuk Polimorfisme dan Gandingan Longgar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn