PHP设计模式之访问者模式
访问者模式实际上是让外部类能够获取树形结构的每个节点的对象,对每个对象进行操作的模式,它让我们在不改动原有树形结构的基础上扩展功能,比如统计等等。
在这种模式下,必须有的几个要素:
1、具体的元素对象,访问者实际要访问的位置(即节点)
2、稳定的树形结构,每个节点都是一个元素对象,一般在组合模式下比较多,它提供给了让访问者能够进行访问的实际位置(即访问者访问的是具体的属性结构的某个节点的实例化对象);
3、访问者接口,这里定义了访问者的接口方法,这是个在每个节点都会用到的方法;用以节点处引用访问者,从而使得访问者能够访问当前节点。
4、访问者的具体实现,继承了访问者接口,以实现接口方法
//定义元素接口 abstract class User { public function getPoint() { return rand();//改数据应该由数据库中读取,这里就直接模拟某个值了、 } //这里的accept方法用于把访问者引入,在这个方法里,$visitor访问者可以通过User类获取需要的数据进而进行相应的操作。 abstract function accept(UserVisitor $visitor); } //定义元素接口 class VipUser extends User { //在这里getPoint()具体实现就由接口中实现了 //在这里就把当前对象传递给了visitor访问者,在访问者类的visitVip方法中就能根据$this获取必要的数据进行相应的操作 public function accept(UserVisitor $vitor) { $vitor->visitVip($this); } } class NormalUser extends User { //同上的getPoint()具体实现就由接口中实现了 //同VipUser类中的accept public function accept(UserVisitor $vitor) { $vitor->visitNormal($this); } } //定义访问者接口 abstract class UserVisitor { //访问者必须要实现的访问不同用户的接口方法 abstract function visitVip(User $user); abstract function visitNormal(User $user); } //积分操作的访问者实现 class PointActVisitor extends UserVisitor { public function visitVip(User $user) { echo 'Vip用户+10分<br>'; } public function visitNormal(User $user) { echo 'Normal用户+5分<br>'; } } //用户树形结构 class Users { protected $users; public function addUser(User $user) { $this->users[] = $user; } }
以上就介绍了PHP设计模式之访问者模式,包括了方面的内容,希望对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

AI Hentai Generator
Menjana ai hentai secara percuma.

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



Fungsi bermaksud fungsi. Ia adalah blok kod yang boleh digunakan semula dengan fungsi tertentu Ia boleh menerima parameter input, melakukan operasi tertentu, dan mengembalikan hasil daripada blok yang boleh digunakan semula. kod untuk meningkatkan kebolehgunaan semula dan kebolehselenggaraan kod.

Setiap tahun sebelum Apple mengeluarkan versi utama baharu iOS dan macOS, pengguna boleh memuat turun versi beta beberapa bulan lebih awal untuk mengalaminya terlebih dahulu. Memandangkan perisian ini digunakan oleh orang awam dan pembangun, Apple telah melancarkan versi pembangun dan awam, yang merupakan versi beta awam bagi versi beta pembangun, untuk kedua-duanya. Apakah perbezaan antara versi pembangun dan versi awam iOS? Secara literal, versi pembangun ialah versi ujian pembangun dan versi awam ialah versi ujian awam. Versi pembangun dan versi awam menyasarkan khalayak yang berbeza. Versi pembangun digunakan oleh Apple untuk ujian oleh pembangun Anda memerlukan akaun pembangun Apple untuk memuat turun dan meningkatkannya.

Dalam artikel ini, kita akan belajar tentang fungsi enumerate() dan tujuan fungsi "enumerate()" dalam Python. Apakah fungsi enumerate()? Fungsi enumerate() Python menerima pengumpulan data sebagai parameter dan mengembalikan objek penghitungan. Objek penghitungan dikembalikan sebagai pasangan nilai kunci. Kuncinya ialah indeks yang sepadan dengan setiap item, dan nilainya ialah item. Syntax enumerate(iterable,start) Parameters iterable - Yang diluluskan dalam pengumpulan data boleh dikembalikan sebagai objek enumeration, dipanggil iterablestart - Seperti namanya, indeks permulaan objek enumeration ditakrifkan oleh permulaan. kalau kita abaikan

Penjelasan terperinci tentang peranan dan fungsi jadual MySQL.proc ialah sistem pengurusan pangkalan data relasi yang popular Apabila pembangun menggunakan MySQL, mereka sering melibatkan penciptaan dan pengurusan prosedur tersimpan (StoredProcedure). Jadual MySQL.proc ialah jadual sistem yang sangat penting Ia menyimpan maklumat yang berkaitan dengan semua prosedur tersimpan dalam pangkalan data, termasuk nama, definisi, parameter, dsb. prosedur tersimpan. Dalam artikel ini, kami akan menerangkan secara terperinci peranan dan kefungsian jadual MySQL.proc

Dalam Docker, masalah kebenaran direktori pelekap biasanya boleh diselesaikan dengan kaedah berikut: menambah pilihan berkaitan kebenaran apabila menggunakan parameter -v untuk menentukan direktori pelekap. Anda boleh menentukan kebenaran direktori yang dipasang dengan menambah: ro atau :rw selepas direktori yang dipasang, masing-masing menunjukkan kebenaran baca-sahaja dan baca-tulis. Contohnya: dockerrun-v/host/path:/container/path:roimage_name Tentukan arahan PENGGUNA dalam Dockerfile untuk menentukan pengguna yang dijalankan dalam bekas untuk memastikan bahawa operasi di dalam bekas mematuhi keperluan kebenaran. Contohnya: FROMimage_name#CreateanewuserRUNuseradd-ms/bin/

Penggunaan dan Fungsi Fungsi Vue.use Vue ialah rangka kerja bahagian hadapan yang popular yang menyediakan banyak ciri dan fungsi berguna. Salah satunya ialah fungsi Vue.use, yang membolehkan kami menggunakan pemalam dalam aplikasi Vue. Artikel ini akan memperkenalkan penggunaan dan fungsi fungsi Vue.use dan memberikan beberapa contoh kod. Penggunaan asas fungsi Vue.use adalah sangat mudah, cuma panggilnya sebelum Vue diwujudkan, menghantar pemalam yang anda ingin gunakan sebagai parameter. Berikut ialah contoh mudah: //Perkenalkan dan gunakan pemalam

Pengubah suai akses awam Java membenarkan fungsi untuk diakses dari mana-mana sahaja dan digunakan untuk mengisytiharkan API awam dan mentakrifkan alatan dan utiliti yang dikongsi merentas pakej atau kelas. Penggunaan khusus adalah seperti berikut: Sintaks: nama fungsi jenis nilai pulangan awam (senarai parameter) {...} Senario: fungsi yang perlu diakses dari mana-mana, kaedah dalam API awam, alat kongsi atau utiliti

Penggunaan fungsi fungsi js ialah: 1. Fungsi Isytihar; 3. Parameter fungsi; 5. Fungsi tanpa nama;
