Kadangkala anda mempunyai sekeping kod yang mungkin berkelakuan berbeza bergantung pada situasi. Contohnya, anda mungkin perlu mengira kadar secara berbeza berdasarkan jenis pelanggan atau menggunakan algoritma pengisihan tertentu. Daripada menyertakan gelagat ini dalam ifs atau suis besar, anda boleh menggunakan Strategi Corak Reka Bentuk untuk menstruktur kod anda dengan lebih baik.
Strategi Corak membolehkan anda memisahkan logik tindakan daripada kod yang lain, supaya anda boleh menukar atau mengganti logik ini dengan mudah tanpa perlu mengubah suai keseluruhan program anda. Jika anda mempunyai beberapa cara untuk melakukan tindakan, di sinilah corak ini menjadi sangat berguna. Daripada mempunyai blok bersyarat yang besar, anda mewakilkan gelagat kepada objek tertentu.
Katakan anda sedang membangunkan kedai dalam talian dan anda perlu mengira diskaun untuk pelbagai jenis pelanggan (standard, premium, VIP). Daripada menulis syarat untuk setiap jenis pelanggan di mana-mana dalam kod anda, anda akan dapat menggunakan Strategi Corak untuk merangkum setiap pengiraan pengurangan dalam kelas khusus.
Kami akan mulakan dengan mencipta antara muka DiscountStrategy yang mentakrifkan kaedah kira() yang mesti dilaksanakan oleh setiap strategi pengiraan diskaun.
Seterusnya, kami akan mencipta strategi pengiraan pengurangan yang berbeza. Sebagai contoh, untuk pelanggan standard, tiada pengurangan:
Untuk pelanggan premium, kami akan mengenakan pengurangan sebanyak 10%:
Dan untuk pelanggan VIP, diskaun 20% yang besar:
Sekarang, kami akan mencipta kelas yang akan menggunakan strategi ini. Kelas ini tidak bimbang tentang jenis pengurangan yang akan digunakan, ia mewakilkan logik ini kepada strategi yang diberikan kepadanya.
Hebat! Sekarang kita akan melihat bagaimana kita boleh mengintegrasikan semua ini ke dalam pengawal Symfony. Anda akan memilih strategi berdasarkan jenis pelanggan, tetapi semua logik pengiraan kekal dalam kelas strategi, yang menjadikan pengawal anda lebih mudah dan bersih.
Fleksibiliti: Terima kasih kepada Strategi Corak, anda boleh menambah atau mengubah suai gelagat dengan mudah tanpa menyentuh kod utama anda. Apa yang anda perlu lakukan ialah menambah strategi pengiraan baharu.
Kod yang bersih dan boleh dibaca: Kod anda menjadi lebih mudah dibaca dengan menghapuskan blok if atau switch yang besar-besaran. Setiap polisi mempunyai kelasnya sendiri dengan satu tanggungjawab, yang mengikut Prinsip Tanggungjawab Tunggal (SRP).
Skalabiliti: Jika suatu hari nanti anda perlu menambah diskaun untuk VIP super dengan diskaun 50% lucah, anda hanya mencipta strategi baharu dan kod anda yang selebihnya tidak berubah !
Strategi Corak ialah pilihan yang sangat baik apabila anda mempunyai beberapa cara untuk melaksanakan tindakan yang sama dan anda mahu kod anda kekal fleksibel dan berskala. Daripada berakhir dengan keadaan yang tidak berkesudahan, anda merangkum gelagat dalam kelas khusus, yang membolehkan anda menukarnya dengan mudah.
Dan adakah anda sudah menggunakan Strategi Corak dalam projek Symfony anda? Jangan teragak-agak untuk mengulas artikel ini!
Atas ialah kandungan terperinci Permudahkan pengurusan tingkah laku dengan Strategi Corak dalam PHP dan Symfony. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!