Rumah > Artikel > pembangunan bahagian belakang > Bermula dengan PHP: Corak Negeri
Panduan Bermula PHP: Corak Keadaan
Corak keadaan ialah corak reka bentuk gelagat yang membolehkan objek beralih antara keadaan dalaman yang berbeza, dan keadaan ini mencetuskan operasi gelagat yang berbeza. Artikel ini akan memperkenalkan konsep, pelaksanaan dan senario penggunaan corak keadaan untuk membantu pembangun PHP lebih memahami dan menggunakan corak reka bentuk penting ini.
Konsep
Corak negeri ialah corak yang dicadangkan dalam koleksi corak reka bentuk GoF. Ia terutamanya menerangkan bahawa apabila keadaan dalaman objek berubah, ia akan menyebabkan tingkah laku objek berubah. Corak keadaan boleh mengendalikan keadaan ini dan gelagat yang sepadan, dengan itu mengurangkan lebihan dan kerumitan kod.
Secara khusus, corak keadaan direka bentuk berdasarkan idea merangkum setiap keadaan dan tingkah laku yang sepadan dalam kelas yang berasingan. Dengan cara ini, peralihan antara negeri akan diselesaikan oleh kelas negeri ini, supaya perubahan negeri dapat dilaksanakan dengan cara yang lebih jelas dan ringkas. Dalam pengaturcaraan sebenar, corak keadaan boleh digunakan untuk mengendalikan antara muka pengguna, mesin keadaan, dan pelbagai proses dan senario perniagaan.
Komponen utama yang melaksanakan corak keadaan
termasuk kelas konteks, kelas abstrak nyata dan kelas keadaan konkrit. Antaranya, kelas konteks perlu merekodkan objek keadaan semasa dan menyediakan antara muka untuk peralihan keadaan luaran. Kelas abstrak keadaan mentakrifkan antara muka keadaan abstrak dan contoh operasi. Kelas keadaan tertentu melaksanakan operasi yang ditakrifkan dalam antara muka keadaan dan melaksanakan logik peralihan keadaan. Di bawah, satu contoh akan digunakan untuk menggambarkan lagi pelaksanaan corak keadaan.
Andaikan kita ingin mereka bentuk mesin keadaan ringkas untuk cawan air menggunakan corak keadaan, yang merangkumi dua keadaan: air dan tiada air, dan operasi gelagatnya yang sepadan, seperti ditunjukkan di bawah:
Pertama, kita perlu mencipta kelas konteks untuk merekodkan keadaan semasa dan keadaan penukaran.
class Context { private State $state; public function setState(State $state): void { $this->state = $state; $this->state->setContext($this); } public function fill(): void { $this->state->fill(); } public function drink(): void { $this->state->drink(); } }
Dalam kelas ini, kami merekodkan keadaan dengan menetapkan kaedah setState() dan memanggil kaedah pengendalian keadaan yang sepadan apabila mengisi dan meminum.
Seterusnya, kita perlu mentakrifkan kelas abstrak keadaan untuk mentakrifkan secara seragam antara muka semua kelas negeri.
abstract class State { protected Context $context; public function setContext(Context $context): void { $this->context = $context; } abstract public function fill(): void; abstract public function drink(): void; }
Dalam kelas abstrak ini, kami mentakrifkan kaedah setContext() untuk menetapkan objek konteks supaya objek konteksnya dan kaedah operasi keadaannya boleh dipanggil dalam kelas keadaan.
Kini, kita perlu mencipta dua kelas keadaan khusus, iaitu kelas keadaan air dan kelas keadaan tanpa air. Mereka semua mewarisi daripada kelas abstrak negeri untuk melaksanakan kaedah operasi negeri yang ditakrifkan dalam kelas konteks.
class HasWaterState extends State { public function fill(): void { echo "The cup is already full"; } public function drink(): void { echo "Drinking water..."; $this->context->setState(new NoWaterState()); } } class NoWaterState extends State { public function fill(): void { echo "Filling cup with water..."; $this->context->setState(new HasWaterState()); } public function drink(): void { echo "The cup is empty"; } }
Dalam dua kelas keadaan khusus ini, kami akan melaksanakan kaedah fill() dan drink() dan melakukan peralihan keadaan berdasarkan keadaan semasa. Seperti yang ditunjukkan dalam rajah di atas, apabila status cawan air adalah "air", mengisi cawan air akan mengeluarkan "cawan air penuh", manakala air minuman akan menukar status kepada "tiada air".
Senario Penggunaan
Corak keadaan boleh digunakan dalam banyak situasi berbeza, beberapa daripadanya termasuk:
Ringkasan
Corak Negeri ialah corak reka bentuk yang sangat berguna yang boleh membantu anda mengendalikan dan mengurus keadaan dalam pelbagai situasi yang berbeza. Dalam PHP, corak keadaan boleh digunakan dalam pelbagai proses dan senario perniagaan, seperti antara muka pengguna, mesin keadaan, dan pemprosesan pelbagai logik perniagaan yang kompleks. Dengan mempelajari dan menggunakan corak Negeri, anda boleh menulis kod yang lebih jelas, lebih ringkas dan lebih mudah untuk dikekalkan dan dilanjutkan.
Atas ialah kandungan terperinci Bermula dengan PHP: Corak Negeri. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!