Rumah > Artikel > pembangunan bahagian belakang > Komposisi Daripada Warisan dalam Go
Apabila mereka bentuk perisian, prinsip "komposisi atas warisan" selalunya membawa kepada kod yang lebih fleksibel dan boleh diselenggara. Go, dengan pendekatan uniknya terhadap reka bentuk berorientasikan objek, lebih bersandar pada komposisi dan bukannya warisan. Jom tengok sebabnya.
Dalam bahasa OOP tradisional, warisan membenarkan satu kelas mewarisi gelagat dan sifat daripada yang lain, tetapi ini boleh membawa kepada hierarki yang tegar dan sukar diubah. Go mengelakkan warisan sama sekali dan sebaliknya menggalakkan komposisi—di mana jenis dibina dengan menggabungkan komponen yang lebih kecil dan fokus.
Bayangkan kami memodelkan syarikat dengan pelbagai jenis pekerja: ada yang jurutera, ada pengurus dan ada yang pelatih. Daripada mencipta hierarki kelas yang kompleks, kami akan mentakrifkan gelagat tertentu sebagai jenis bebas dan kemudian menyusunnya.
package main import "fmt" type Worker interface { Work() } type Payable struct { Salary int } func (p Payable) GetSalary() int { return p.Salary } type Manageable struct{} func (m Manageable) Manage() { fmt.Println("Managing team") } type Engineer struct { Payable } func (e Engineer) Work() { fmt.Println("Engineering work being done") } type Manager struct { Payable Manageable } func (m Manager) Work() { fmt.Println("Managerial work being done") }
Di sini:
Dalam Go, antara muka dan komposisi berfungsi bersama untuk membenarkan polimorfisme tanpa warisan. Begini cara kami boleh mengendalikan berbilang jenis pekerja dengan satu fungsi:
func DescribeWorker(w Worker) { w.Work() } func main() { engineer := Engineer{Payable{Salary: 80000}} manager := Manager{Payable{Salary: 100000}, Manageable{}} DescribeWorker(engineer) DescribeWorker(manager) }
Keutamaan Go untuk gubahan berbanding warisan bukan sekadar kelainan bahasa—ia menggalakkan kod yang lebih bersih dan modular yang boleh disesuaikan untuk diubah. Daripada hierarki tegar, anda mendapat komponen yang fleksibel dan boleh diguna semula yang memastikan asas kod anda lincah dan mudah diselenggara.
Atas ialah kandungan terperinci Komposisi Daripada Warisan dalam Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!