Rumah > Artikel > pembangunan bahagian belakang > Corak Reka Bentuk Pembina
Corak reka bentuk Builder digunakan untuk membina objek kompleks secara berperingkat, membenarkan penciptaan perwakilan berbeza objek menggunakan proses pembinaan yang sama. Dalam artikel ini, kami akan meneroka cara melaksanakan corak Pembina di Golang, memahami faedahnya dan menganalisis contoh praktikal penggunaan.
Corak Builder memisahkan pembinaan objek kompleks daripada perwakilannya, membenarkan proses pembinaan yang sama mencipta representasi yang berbeza. Ini amat berguna apabila objek perlu dibuat dalam berbilang langkah atau dengan berbilang konfigurasi yang mungkin.
Untuk melaksanakan Pembina kami, mari bayangkan objek yang kompleks di mana ia akan diperlukan untuk memulakan beberapa medan dan juga objek berkumpulan yang lain. Bagaimana pula dengan sebuah Rumah? Di mana kami akan mempunyai dua jenis pembinaan, yang konvensional di mana konkrit dan bata akan digunakan, dan yang kedua diperbuat daripada kayu.
Pertama, kita perlu menentukan struktur objek yang ingin kita bina. Seperti yang dikatakan sebelum ini, kami akan membina sebuah rumah. Di dalam Struktur ini kami akan meletakkan apa yang perlu untuk menciptanya.
// house.go package main type House struct { Foundation string Structure string Roof string Interior string }
Masih dalam fail yang sama, kami akan mentakrifkan antara muka Pembina kami yang menentukan kaedah yang diperlukan untuk membina bahagian lain Rumah.
//house.go package main type House struct { Foundation string Structure string Roof string Interior string } type HouseBuilder interface { SetFoundation() SetStructure() SetRoof() SetInterior() GetHouse() House }
Jom buat dua fail baharu, concreteHouse dan woodHouse. Ia akan menjadi pelaksanaan kelas konkrit yang mengikuti antara muka HouseBuilder.
//concreteHouse.go package main type ConcreteHouseBuilder struct { house House } func (b *ConcreteHouseBuilder) SetFoundation() { b.house.Foundation = "Concrete, brick, and stone" } func (b *ConcreteHouseBuilder) SetStructure() { b.house.Structure = "Wood and brick" } func (b *ConcreteHouseBuilder) SetRoof() { b.house.Roof = "Concrete and reinforced steel" } func (b *ConcreteHouseBuilder) SetInterior() { b.house.Interior = "Gypsum board, plywood, and paint" } func (b *ConcreteHouseBuilder) GetHouse() House { return b.house }
//woodHouse.go package main type WoodHouseBuilder struct { house House } func (b *WoodHouseBuilder) SetFoundation() { b.house.Foundation = "Wooden piles" } func (b *WoodHouseBuilder) SetStructure() { b.house.Structure = "Wooden frame" } func (b *WoodHouseBuilder) SetRoof() { b.house.Roof = "Wooden shingles" } func (b *WoodHouseBuilder) SetInterior() { b.house.Interior = "Wooden panels and paint" } func (b *WoodHouseBuilder) GetHouse() House { return b.house }
Pengarah ialah kelas yang menguruskan pembinaan objek, memastikan langkah pembinaan dipanggil mengikut susunan yang betul. Ia tidak mengetahui apa-apa tentang butiran pelaksanaan Builder tertentu, ia hanya memanggil kaedah Builder dalam urutan logik untuk mencipta produk akhir.
//director.go package main type Director struct { builder HouseBuilder } func (d *Director) Build() { d.builder.SetFoundation() d.builder.SetStructure() d.builder.SetRoof() d.builder.SetInterior() } func (d *Director) SetBuilder(b HouseBuilder) { d.builder = b }
Akhir sekali, kami akan menggunakan Pengarah dan Pembina konkrit untuk membina pelbagai jenis rumah.
//main.go package main import ( "fmt" ) func main() { cb := &builder.ConcreteHouseBuilder{} director := builder.Director{Builder: cb} director.Build() concreteHouse := cb.GetHouse() fmt.Println("Concrete House") fmt.Println("Foundation:", concreteHouse.Foundation) fmt.Println("Structure:", concreteHouse.Structure) fmt.Println("Roof:", concreteHouse.Roof) fmt.Println("Interior:", concreteHouse.Interior) fmt.Println("-------------------------------------------") wb := &builder.WoodHouseBuilder{} director.SetBuilder(wb) director.Build() woodHouse := wb.GetHouse() fmt.Println("Wood House") fmt.Println("Foundation:", woodHouse.Foundation) fmt.Println("Structure:", woodHouse.Structure) fmt.Println("Roof:", woodHouse.Roof) fmt.Println("Interior:", woodHouse.Interior) }
Corak Pembina ialah alat untuk membina objek kompleks dengan cara yang bertambah dan fleksibel. Di Golang, pelaksanaan corak ini adalah langsung dan berkesan, membolehkan penciptaan sistem modular dan mudah diselenggara. Dengan menggunakan antara muka dan kelas konkrit, kami boleh memusatkan logik pembinaan dan memudahkan evolusi kod apabila keperluan baharu muncul.
Atas ialah kandungan terperinci Corak Reka Bentuk Pembina. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!