Rumah > Artikel > pembangunan bahagian belakang > Corak reka bentuk penutupan dalam projek Golang
Penutupan ialah teknik yang mengikat fungsi kepada persekitaran berubah-ubah yang diaksesnya. Di Golang, ia digunakan secara meluas dalam corak reka bentuk seperti: Corak kilang: merangkum kaedah kilang dan data peribadi untuk mencipta jenis objek tertentu. Corak strategi: Merangkum kaedah strategi dan data peribadi untuk bertukar antara algoritma. Corak pemerhati: Merangkum kaedah pemerhati dan data peribadi untuk melanggan peristiwa objek lain.
Corak reka bentuk penutupan dalam projek Golang
Pengenalan
Penutupan ialah teknik yang berkuasa untuk mengikat fungsi dan pembolehubah yang diaksesnya. Di Golang, penutupan digunakan secara meluas untuk meningkatkan kebolehbacaan kod, kebolehgunaan semula dan kebolehselenggaraan.
Apakah penutupan?
Penutupan terdiri daripada dua bahagian:
Apabila fungsi bersarang dipanggil, ia bukan sahaja melaksanakan kodnya sendiri, tetapi juga mengakses persekitaran pembolehubah yang dimilikinya. Tingkah laku ini membolehkan penutupan merangkum data peribadi sambil membenarkan fungsi luaran mengakses data tersebut.
Penutupan dalam Corak Reka Bentuk
Penutupan boleh digunakan pada pelbagai corak reka bentuk dalam projek Golang, termasuk:
Kes Praktikal: Corak Kilang
Berikut menunjukkan contoh Corak Kilang yang dilaksanakan menggunakan penutupan:
package main import ( "fmt" ) func main() { // 定义工厂函数,其中闭包封装了创建特定对象所需的私有数据。 createAnimalFactory := func(animalType string) func() Animal { switch animalType { case "dog": return func() Animal { return &Dog{name: "Fido"} } case "cat": return func() Animal { return &Cat{name: "Whiskers"} } default: return nil } } // 创建不同的动物。 dogFactory := createAnimalFactory("dog") dog := dogFactory() fmt.Println(dog) catFactory := createAnimalFactory("cat") cat := catFactory() fmt.Println(cat) } // Animal 接口定义了所有动物类型共享的方法。 type Animal interface { GetName() string } // Dog 类型实现了 Animal 接口。 type Dog struct { name string } func (d *Dog) GetName() string { return d.name } // Cat 类型实现了 Animal 接口。 type Cat struct { name string } func (c *Cat) GetName() string { return c.name }
Dalam contoh ini, penutupan mengembalikan nilai animalType
变量保存在其变量环境中,使 createAnimalFactory
函数可以根据不同的 animalType
kepada fungsi penciptaan yang berbeza.
Atas ialah kandungan terperinci Corak reka bentuk penutupan dalam projek Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!