Tampalan Monyet: Teknik Pengubahsuaian Dinamik
Dalam pengaturcaraan, tampalan monyet merujuk kepada amalan mengubah suai atribut kelas atau modul secara dinamik pada masa larian. Tidak seperti kaedah atau operator lebih muatan, yang melibatkan penentuan berbilang pelaksanaan kaedah atau operator yang sama dengan parameter yang berbeza-beza, tampalan monyet membolehkan anda menggantikan atau mengubah suai atribut sedia ada secara terus.
Untuk memahami tampalan monyet, pertimbangkan senario berikut:
Kelas mengandungi kaedah yang dipanggil get_data() yang mendapatkan semula data daripada sumber luaran, seperti pangkalan data atau API web. Walau bagaimanapun, dalam ujian unit, kami mungkin mahu memintas sumber data luaran dan menggunakan kaedah stub yang mengembalikan data tetap.
Dengan tampalan monyet, kami boleh menggantikan kaedah get_data() asal dengan kaedah stub kami secara dinamik :
# Original get_data() method def get_data(): # Perform external lookup # Stub get_data() method for unit testing def get_data_stub(): return 'Fixed data' # Monkey patch the get_data() method with the stub MyClass.get_data = get_data_stub
Sekarang, apabila kaedah get_data() dipanggil dalam kes ujian, ia akan melaksanakan kaedah stub dan bukannya logik perolehan data asal.
Awas:
Walaupun tampalan monyet adalah teknik yang berkuasa, ia harus digunakan dengan berhati-hati:
Atas ialah kandungan terperinci Apakah Monkey Patching dan Bagaimana Ia Mengubah Suai Kod Secara Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!