


PHP Master | Menguruskan kerumitan dengan corak fasad
Corak reka bentuk dibina untuk menyeragamkan penyelesaian untuk masalah biasa yang dihadapi dalam pembangunan perisian. Apabila kita membangunkan aplikasi yang kompleks, kita harus memperuntukkan masa yang mencukupi untuk merancang reka bentuk dan struktur aplikasinya. Apabila kita berbuat demikian, kita mempunyai peluang untuk memilih corak reka bentuk yang sesuai. Tetapi ada situasi di mana kita menggunakan corak reka bentuk tanpa mengetahui bahawa kita menggunakannya.
Fasad adalah corak reka bentuk yang digunakan dalam hampir setiap aplikasi web, tetapi sering tanpa mengetahui. Istilah "corak reka bentuk" mewujudkan imej mental sesuatu yang rumit dan sukar difahami. Walaupun ini kadang -kadang boleh berlaku, corak fasad mudah dilaksanakan. Mari kita lihat apa fasad dan apa yang dilakukannya untuk membantu kita menulis kod yang baik.
Takeaways Key
proses meminjam buku
Anggapkan bahawa kami sedang membangunkan aplikasi untuk sistem pengurusan perpustakaan. Meminjam dan mengembalikan buku adalah jelas dua tugas yang paling penting dalam sistem sedemikian. Tetapi pertimbangkan pelaksanaan biasa proses pinjaman buku:
Pelaksanaan setiap tugas terkandung dalam kelas berasingan dengan antara muka mereka sendiri. Kod berikut menggambarkan bagaimana sistem mungkin membiarkan pengguna meminjam buku dengan memanggil kaedah yang diperlukan:
<span><span><?php
</span></span><span><span>public class User
</span></span><span><span>{
</span></span><span> <span>public function borrowBook() {
</span></span><span> <span>$bookManager = new Book_Manager();
</span></span><span> <span>$bookManager->returnBooks();
</span></span><span>
</span><span> <span>$bookPayments = new Book_Payments();
</span></span><span> <span>if ($bookPayments->hasOverdueBooks()) {
</span></span><span> <span>$bookPayments->payBookFines();
</span></span><span> <span>}
</span></span><span>
</span><span> <span>$bookLibrary = new Book_Library();
</span></span><span> <span>$bookReservations = new Book_Reservations();
</span></span><span>
</span><span> <span>$book = $bookLibrary->searchBooks();
</span></span><span> <span>$isAvailable = $bookLibrary->isBookAvailable($book);
</span></span><span> <span>$isReserved = $bookReservations->isBookReserved($book);
</span></span><span> <span>if ($isAvailable && !isReserved) {
</span></span><span> <span>$bookLibrary->locateBook($book);
</span></span><span>
</span><span> <span>$bookManager->borrowBook($book);
</span></span><span> <span>$bookLibrary->updateBookAvailability($book, $status);
</span></span><span> <span>}
</span></span><span> <span>}
</span></span><span><span>}</span></span>
Melaksanakan fasad perpustakaan
Kita perlu meremehkan pengguna dari alur kerja kompleks perpustakaan dan membolehkan antara muka yang dipermudahkan mendedahkan hanya maklumat yang berkaitan secara langsung dengan pengguna - fasad. Mari lihat pelaksanaan fasad perpustakaan.
<span><span><?php
</span></span><span><span>class Library_Facade
</span></span><span><span>{
</span></span><span> <span>public function returnBooks() {
</span></span><span> <span>// previous implementation by calling necessary classes
</span></span><span> <span>}
</span></span><span>
</span><span> <span>public function borrowBooks() {
</span></span><span> <span>}
</span></span><span>
</span><span> <span>public function searchBooks() {
</span></span><span> <span>}
</span></span><span>
</span><span> <span>public function reserveBooks() {
</span></span><span> <span>}
</span></span><span><span>}</span></span>
<span><span><?php
</span></span><span><span>class User
</span></span><span><span>{
</span></span><span> <span>public function borrowBook() {
</span></span><span> <span>$libraryFacade = new Library_Facade();
</span></span><span> <span>$libraryFacade->borrowBook();
</span></span><span> <span>}
</span></span><span><span>}</span></span>
Definisi corak fasad
Oleh kerana kami telah mengenal pasti proses dan kepentingan melaksanakan corak fasad, kini sudah tiba masanya untuk mempelajari definisi corak. Berikut ini diekstrak dari Wikipedia:
Fasad adalah objek yang menyediakan antara muka yang dipermudahkan kepada badan kod yang lebih besar, seperti perpustakaan kelas. Fasad boleh:
Pelaksanaan dunia sebenar
Di bahagian sebelumnya kita mempelajari teori di sebalik corak fasad menggunakan sistem perpustakaan sebagai contoh. Di dunia nyata, fasad boleh menjadi lebih kompleks daripada pelaksanaan dalam senario perpustakaan kami. Mari kita semak beberapa pelaksanaan corak dalam konteks aplikasi dan perpustakaan dunia nyata.
opauth untuk pengesahan terbuka
Baru -baru ini saya menulis artikel mengenai perpustakaan pengesahan terbuka yang popular yang dipanggil Opauth, dan saya cadangkan anda membacanya jika anda belum melakukannya. Anggapkan kami telah membangunkan tapak rangkaian sosial profesional dan kami mahu pengguna kami dapat menggunakan laman web popular lain seperti Twitter, LinkedIn, dan Facebook untuk mengesahkan. Untuk melengkapkan proses pengesahan, kami menggunakan perpustakaan pihak ketiga yang sedia ada untuk mengakses perkhidmatan rangkaian. Mari kita lihat beberapa kod sampel untuk dengan perpustakaan Twitter untuk mencapai fungsi yang dikehendaki.
<span><span><?php
</span></span><span><span>public class User
</span></span><span><span>{
</span></span><span> <span>public function borrowBook() {
</span></span><span> <span>$bookManager = new Book_Manager();
</span></span><span> <span>$bookManager->returnBooks();
</span></span><span>
</span><span> <span>$bookPayments = new Book_Payments();
</span></span><span> <span>if ($bookPayments->hasOverdueBooks()) {
</span></span><span> <span>$bookPayments->payBookFines();
</span></span><span> <span>}
</span></span><span>
</span><span> <span>$bookLibrary = new Book_Library();
</span></span><span> <span>$bookReservations = new Book_Reservations();
</span></span><span>
</span><span> <span>$book = $bookLibrary->searchBooks();
</span></span><span> <span>$isAvailable = $bookLibrary->isBookAvailable($book);
</span></span><span> <span>$isReserved = $bookReservations->isBookReserved($book);
</span></span><span> <span>if ($isAvailable && !isReserved) {
</span></span><span> <span>$bookLibrary->locateBook($book);
</span></span><span>
</span><span> <span>$bookManager->borrowBook($book);
</span></span><span> <span>$bookLibrary->updateBookAvailability($book, $status);
</span></span><span> <span>}
</span></span><span> <span>}
</span></span><span><span>}</span></span>
<span><span><?php
</span></span><span><span>class Library_Facade
</span></span><span><span>{
</span></span><span> <span>public function returnBooks() {
</span></span><span> <span>// previous implementation by calling necessary classes
</span></span><span> <span>}
</span></span><span>
</span><span> <span>public function borrowBooks() {
</span></span><span> <span>}
</span></span><span>
</span><span> <span>public function searchBooks() {
</span></span><span> <span>}
</span></span><span>
</span><span> <span>public function reserveBooks() {
</span></span><span> <span>}
</span></span><span><span>}</span></span>
Fungsi Meta WordPress
WordPress bukanlah salah satu rangka kerja yang paling popular di kalangan pemaju PHP yang serius memandangkan kualiti kodnya. Tetapi kita dapat dengan mudah mencari beberapa pelaksanaan fasad yang berjaya di dalam asas WordPress. Di sini saya akan melihat fungsi update_post_meta () untuk menyimpan data tersuai untuk siaran WordPress.
WordPress membolehkan kami membuat medan tersuai yang berkaitan dengan jawatan sedia ada. Fikirkan bagaimana kita menyelamatkan bidang ini dalam situasi yang biasa ... kita perlu melaksanakan semua tugas berikut:
Itu cukup banyak kerja untuk menyelamatkan satu bidang tersuai! WordPress menyembunyikan kerumitan menyelamatkan bidang ini dengan menyediakan fungsi terbina dalam yang dipanggil update_post_meta ()
untuk bertindak sebagai fasad. Ini membenarkan kami memberi tumpuan kepada lulus data yang diperlukan berkaitan dengan aplikasi kami; Semua tugas yang disebutkan di atas tersembunyi dari pengguna.
Sekarang pertimbangkan pelaksanaan update_post_meta () untuk mengenal pasti fungsinya sebagai fasad:
<span><span><?php
</span></span><span><span>public class User
</span></span><span><span>{
</span></span><span> <span>public function borrowBook() {
</span></span><span> <span>$bookManager = new Book_Manager();
</span></span><span> <span>$bookManager->returnBooks();
</span></span><span>
</span><span> <span>$bookPayments = new Book_Payments();
</span></span><span> <span>if ($bookPayments->hasOverdueBooks()) {
</span></span><span> <span>$bookPayments->payBookFines();
</span></span><span> <span>}
</span></span><span>
</span><span> <span>$bookLibrary = new Book_Library();
</span></span><span> <span>$bookReservations = new Book_Reservations();
</span></span><span>
</span><span> <span>$book = $bookLibrary->searchBooks();
</span></span><span> <span>$isAvailable = $bookLibrary->isBookAvailable($book);
</span></span><span> <span>$isReserved = $bookReservations->isBookReserved($book);
</span></span><span> <span>if ($isAvailable && !isReserved) {
</span></span><span> <span>$bookLibrary->locateBook($book);
</span></span><span>
</span><span> <span>$bookManager->borrowBook($book);
</span></span><span> <span>$bookLibrary->updateBookAvailability($book, $status);
</span></span><span> <span>}
</span></span><span> <span>}
</span></span><span><span>}</span></span>
Kesimpulan
Fasad adalah salah satu corak reka bentuk yang paling mudah dan mudah digunakan dalam pembangunan perisian. Sepanjang artikel ini saya bercakap tentang pelbagai pelaksanaan corak fasad. Kini sudah tiba masanya untuk berkongsi pengalaman anda dalam komen di bawah. Adakah anda tahu mana -mana perpustakaan atau perkhidmatan yang menggunakan fasad? Jangan ragu untuk berkongsi pelaksanaan praktikal corak fasad yang anda jumpai.
imej melalui Fotolia
soalan yang sering ditanya mengenai corak fasad
Apakah tujuan utama corak fasad dalam reka bentuk perisian? Ia menyembunyikan kerumitan sistem dan menyediakan antara muka kepada klien dari mana klien boleh mengakses sistem. Corak ini melibatkan satu kelas yang menyediakan kaedah mudah yang diperlukan oleh pelanggan dan perwakilan panggilan ke kaedah kelas sistem yang sedia ada. Meningkatkan kebolehbacaan kod dan kebolehgunaan dengan menyediakan antara muka yang mudah ke subsistem yang kompleks. Daripada membuat perjanjian pelanggan dengan beberapa kelas subsistem secara langsung, fasad merangkumi subsistem dengan antara muka bersatu. Ini mengurangkan lengkung pembelajaran yang diperlukan untuk memahami subsistem dan menjadikan subsistem lebih mudah digunakan dan dikendalikan. corak fasad adalah penggunaan komputer. Apabila anda menghidupkan komputer anda, anda tidak perlu memahami bagaimana komponen dalaman berfungsi bersama untuk boot sistem. Anda hanya menekan butang kuasa (fasad) dan proses kompleks berlaku di belakang tabir.
Apakah kelebihan dan kekurangan menggunakan corak fasad? Ia juga menggalakkan decoupling antara subsistem dan pelanggan mereka, yang boleh menjadikan sistem lebih modular dan lebih mudah dikekalkan. Walau bagaimanapun, kelemahan yang berpotensi adalah bahawa corak fasad boleh menjadi hambatan jika terlalu banyak fungsi dimasukkan ke dalam fasad. Ia juga boleh menyembunyikan ciri -ciri berguna subsistem dari klien. digunakan untuk menambah atau mengubah tingkah laku objek individu, corak fasad digunakan untuk memudahkan sistem kelas yang kompleks. Ia menyediakan antara muka yang dipermudahkan ke subsistem yang kompleks, menyembunyikan selok -belok subsistem dari klien. Digunakan bersempena dengan corak reka bentuk yang lain. Sebagai contoh, ia boleh digunakan dengan corak singleton untuk memastikan bahawa hanya satu contoh fasad dibuat. Ia juga boleh digunakan dengan corak kilang abstrak untuk menyediakan antara muka yang mudah untuk mewujudkan keluarga objek yang berkaitan. menyumbang kepada prinsip pengetahuan paling sedikit (atau undang -undang Demeter) dengan mengehadkan komunikasi antara objek. Pelanggan hanya perlu berkomunikasi dengan fasad, bukan dengan kelas subsistem. Ini mengurangkan kebergantungan antara objek, menjadikan sistem lebih mantap dan lebih mudah untuk dikekalkan. Aplikasi multi-threaded. Walau bagaimanapun, penjagaan mesti diambil untuk memastikan bahawa fasad itu selamat. Ini dapat dicapai dengan menggunakan mekanisme penyegerakan seperti kunci atau semaphores untuk mencegah keadaan kaum. Pelanggan perlu berinteraksi dengan. Ini dapat mengurangkan overhead penciptaan objek dan penyerahan kaedah. Walau bagaimanapun, jika fasad menjadi kesesakan, ia boleh memberi kesan negatif terhadap prestasi. Kelas Facade yang menyediakan antara muka mudah ke subsistem kompleks. Kelas fasad harus merangkum subsistem dan perwakilan panggilan ke kelas subsistem. Pelanggan harus berinteraksi dengan subsistem melalui fasad, tidak langsung dengan kelas subsistem.
Atas ialah kandungan terperinci PHP Master | Menguruskan kerumitan dengan corak fasad. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Sesi rampasan boleh dicapai melalui langkah -langkah berikut: 1. Dapatkan ID Sesi, 2. Gunakan ID Sesi, 3. Simpan sesi aktif. Kaedah untuk mengelakkan rampasan sesi dalam PHP termasuk: 1. Gunakan fungsi Sesi_Regenerate_ID () untuk menjana semula ID Sesi, 2. Data sesi stor melalui pangkalan data, 3.

Terdapat empat jenis kesilapan utama dalam PHP: 1.Notice: yang paling sedikit, tidak akan mengganggu program, seperti mengakses pembolehubah yang tidak ditentukan; 2. Amaran: Serius daripada notis, tidak akan menamatkan program, seperti tidak mengandungi fail; 3. FatalError: Yang paling serius, akan menamatkan program ini, seperti tidak memanggil fungsi; 4. ParseError: Kesalahan sintaks, akan menghalang program daripada dilaksanakan, seperti lupa untuk menambah tag akhir.

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

Kaedah permintaan HTTP termasuk GET, POST, PUT dan DELETE, yang digunakan untuk mendapatkan, menghantar, mengemas kini dan memadam sumber masing -masing. 1. Kaedah GET digunakan untuk mendapatkan sumber dan sesuai untuk operasi membaca. 2. Kaedah Pos digunakan untuk menyerahkan data dan sering digunakan untuk membuat sumber baru. 3. Kaedah Put digunakan untuk mengemas kini sumber dan sesuai untuk kemas kini lengkap. 4. Kaedah Padam digunakan untuk memadam sumber dan sesuai untuk operasi penghapusan.

Dalam php, kata laluan_hash dan kata laluan 1) password_hash menjana hash yang mengandungi nilai garam untuk meningkatkan keselamatan. 2) Kata Laluan_verify Sahkan kata laluan dan pastikan keselamatan dengan membandingkan nilai hash. 3) MD5 dan SHA1 terdedah dan kekurangan nilai garam, dan tidak sesuai untuk keselamatan kata laluan moden.

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

PHP digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan pembangunan API. 1) e-dagang: Digunakan untuk fungsi keranjang belanja dan pemprosesan pembayaran. 2) Sistem Pengurusan Kandungan: Digunakan untuk penjanaan kandungan dinamik dan pengurusan pengguna. 3) Pembangunan API: Digunakan untuk Pembangunan API RESTful dan Keselamatan API. Melalui pengoptimuman prestasi dan amalan terbaik, kecekapan dan pemeliharaan aplikasi PHP bertambah baik.

Fungsi anak panah diperkenalkan dalam Php7.4 dan merupakan bentuk penutupan ringkas. 1) Mereka ditakrifkan menggunakan => operator, fungsi tidak menggunakan kata kunci. 2) Fungsi anak panah secara automatik menangkap pembolehubah skop semasa tanpa kata kunci penggunaan. 3) Mereka sering digunakan dalam fungsi panggilan balik dan pengiraan pendek untuk meningkatkan kesederhanaan kod dan kebolehbacaan.
