Rumah >pembangunan bahagian belakang >C++ >Antaramuka lwn. Kelas: Bilakah Anda Harus Memilih Antara Muka untuk Polimorfisme dan Gandingan Longgar?
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:
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!