Rumah >pembangunan bahagian belakang >Golang >Apakah nama skema apabila fungsi melaksanakan antara muka?
Editor PHP Youzi berada di sini untuk menjawab soalan biasa: "Apakah nama corak apabila fungsi melaksanakan antara muka Dalam PHP, apabila fungsi melaksanakan semua kaedah dalam antara muka, corak ini dipanggil Diketahui?" sebagai "corak pelaksanaan antara muka" atau "corak penyesuai antara muka". Corak pelaksanaan antara muka ialah corak reka bentuk biasa yang membolehkan pengaturcara mentakrifkan satu set kaedah dengan melaksanakan antara muka, dengan itu mencapai penggunaan semula kod dan modularisasi. Melalui model ini, kita boleh mencapai polimorfisme antara muka dan meningkatkan fleksibiliti dan kebolehselenggaraan kod. Sama ada dalam pengaturcaraan berorientasikan objek atau pengaturcaraan berfungsi, corak pelaksanaan antara muka adalah cara teknikal yang penting.
Seterusnya, kita boleh mencipta fungsi yang melaksanakan antara muka, seperti http.handler
接口和具体类型http.handlerfunc
. Saya mencipta satu lagi contoh mudah corak ini untuk mengira bonus untuk pekerja yang berbeza.
type BonusCalculator interface { Calculate(salary float64) float64 } type BonusFunc func(salary float64) float64 func (bonus BonusFunc) Calculate(salary float64) float64 { return bonus(salary) } var ( DeveloperBonus BonusFunc = func(salary float64) float64 { return salary*1.5 + 2500.00 } ManagerBonus BonusFunc = func(salary float64) float64 { return salary * 2.0 } DirectorBonus BonusFunc = func(salary float64) float64 { return salary * 3.3 } ) func CalculateBonus (bonus BonusCalculator, salary float64) float64 { return bonus.Calculate(salary) } func main() { bonus := CalculateBonus(DirectorBonus, 35000.00) fmt.Printf("bonus %.2f", bonus) }
Jadi di atas kita mempunyai bonusfuncs
实现接口 bonuscalculator
yang mudah dan bukannya menggunakan struct untuk melakukan perkara yang sama.
Adakah corak ini mempunyai nama? Saya telah melihatnya di banyak tempat tetapi tidak pernah menemui namanya.
Adakah corak ini mempunyai nama? Saya telah melihatnya di banyak tempat tetapi tidak pernah menemui namanya.
Ya, corak ini dipanggil Adapter kerana ia membenarkan "antara muka" tertentu (dalam kes ini, penutupan) digunakan sebagai antara muka lain (jenis yang memuaskan bonuscalculator
).
Dalam contoh anda, anda mempunyai antara muka bonuscalculator
:
type bonuscalculator interface { calculate(salary float64) float64 }
Walau bagaimanapun, anda mempunyai penutupan jenis func(gaji float64) float64
dan anda mahu dapat melepasinya apabila anda memerlukan jenis yang memenuhi bonusfunc
, iaitu mempunyai kaedah func(salary float64) float64
类型的闭包,并且您希望在需要满足 bonusfunc
的类型时能够传递它们,即具有方法 calculate(salary float64) float64
(闭包没有具有此类名称的方法,因此它们不满足 bonuscalculator
).
Apa yang anda mahu ialah menyesuaikan func(gaji float64) float64
kepada func(salary float64) float64
改编为 bonuscalculator
。因此,您定义了一个新类型 bonusfunc
,它是适配器。它将派生自您想要适应的闭包类型,然后通过定义一个方法 calculate(salary float64) float64
来满足 bonuscalculator
. Oleh itu, anda menentukan jenis bonusfunc
baharu, iaitu penyesuai. Ia akan diperoleh daripada jenis penutupan yang ingin anda sesuaikan, dan kemudian memenuhi keperluan
calculate(salary float64) float64
yang hanya memanggil penutupan asas:
type BonusFunc func(salary float64) float64 func (bonus BonusFunc) Calculate(salary float64) float64 { return bonus(salary) }
bonusfunc
是适配器;它的存在只是为了适应 func(salary float64) float64
以便满足 bonuscalculator
接口。现在,每当您将 func(salary float64) float64
分配给 bonusfunc
时,您都会获得一个满足 bonuscalculator
bonusfunc
ialah penyesuai; ia wujud hanya untuk menyesuaikan diri dengan func(gaji float64) float64
untuk memenuhi antara muka . Sekarang, apabila anda memberikan func(gaji float64) float64
kepada bonusfunc
, anda akan mendapat nilai yang memuaskan 🎜 . 🎜Atas ialah kandungan terperinci Apakah nama skema apabila fungsi melaksanakan antara muka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!