Adakah Model Komposisi Go Mengurangkan Isu Kelas Asas Rapuh?

Barbara Streisand
Lepaskan: 2024-10-28 14:16:02
asal
115 orang telah melayarinya

 Does Go's Composition Model Mitigate the Fragile Base Class Issue?

Adakah Isu Kelas Asas Fragile Wujud dalam Go?

Walaupun merangkumi komposisi berbanding warisan, isu kelas asas yang rapuh masih boleh timbul dalam Go, walaupun dalam keadaan yang kurang teruk bentuk.

Masalah Kelas Asas Rapuh

Masalah berlaku apabila perubahan kepada kelas asas memecahkan subkelasnya. Dalam bahasa dengan kaedah maya (seperti Java), kaedah mengatasi dalam subkelas boleh membawa kepada tingkah laku yang tidak dijangka jika kelas asas diubah suai.

Dalam Go, walau bagaimanapun, terdapat tiada polimorfisme (boleh ditindih kaedah). Apabila membenamkan jenis, kaedah terbenam dinaikkan pangkat kepada struktur pembalut tetapi tidak boleh ditindih. Ini mengurangkan masalah kelas asas yang rapuh, kerana kaedah yang digalakkan tidak boleh diubah oleh subkelas.

Contoh

Dalam Java:

<code class="java">class Counter {
  int value;
  void inc() { value++; }
  void incBy(int n) { value += n; }
}
class MyCounter extends Counter {
  void inc() { incBy(1); }
}</code>
Salin selepas log masuk

Jika Counter.incBy() diubah suai kepada inc() berkali-kali, MyCounter akan memasuki gelung tak terhingga.

In Go:

<code class="go">type Counter struct {
  value int
}
func (c *Counter) Inc() { c.value++ }
func (c *Counter) IncBy(n int) { c.value += n }
type MyCounter struct {
  Counter
}
func (m *MyCounter) Inc() { m.IncBy(1) }</code>
Salin selepas log masuk

Walaupun dengan pengubahsuaian yang sama kepada Counter.incBy() seperti dalam contoh Java, MyCounter masih akan berfungsi dengan betul, kerana ia secara terus memanggil Counter.Inc(). Kaedah kelas asas tidak terjejas oleh sebarang perubahan dalam subkelas.

Kesimpulan

Walaupun isu kelas asas yang rapuh kurang berleluasa dalam Go kerana ketiadaan polimorfisme, adalah penting untuk mempertimbangkan implikasi potensi perubahan kelas asas apabila membenamkan jenis dalam struct.

Atas ialah kandungan terperinci Adakah Model Komposisi Go Mengurangkan Isu Kelas Asas Rapuh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!