Rumah pembangunan bahagian belakang tutorial php Analisis mendalam corak pemerhati dalam pengaturcaraan berorientasikan objek PHP

Analisis mendalam corak pemerhati dalam pengaturcaraan berorientasikan objek PHP

Aug 13, 2023 pm 06:34 PM
php pengaturcaraan berorientasikan objek Corak pemerhati

Analisis mendalam corak pemerhati dalam pengaturcaraan berorientasikan objek PHP

Analisis mendalam corak pemerhati dalam pengaturcaraan berorientasikan objek PHP

Corak pemerhati ialah corak reka bentuk yang biasa digunakan untuk mencapai gandingan longgar antara objek dalam sistem perisian. Idea terasnya ialah: objek (dipanggil pemerhati atau subjek) mengekalkan senarai objek (dipanggil pemerhati) yang bergantung padanya Apabila keadaan objek yang diperhatikan berubah, ia akan memberitahu semua pemerhati secara automatik. Dengan cara ini, corak pemerhati boleh merealisasikan hubungan satu-ke-banyak antara objek Apabila objek berubah, semua objek berkaitan akan dimaklumkan dan boleh bertindak balas dalam masa.

Dalam pengaturcaraan berorientasikan objek PHP yang popular, corak pemerhati digunakan secara meluas untuk melaksanakan sistem dipacu peristiwa, sistem pemesejan, sistem langganan dan penerbitan, dsb. Di bawah, kami akan menganalisis secara mendalam pelaksanaan corak pemerhati dalam pengaturcaraan berorientasikan objek PHP dan memberikan beberapa contoh kod.

Pertama, kami mentakrifkan antara muka subjek, yang mengandungi kaedah berikut:

interface Subject
{
    public function attach(Observer $observer);
    public function detach(Observer $observer);
    public function notify();
}
Salin selepas log masuk

Dalam antara muka ini, kami mentakrifkan tiga kaedah: attach digunakan untuk melanggan pemerhati, detach digunakan untuk berhenti melanggan pemerhati, dan notify digunakan untuk maklumkan kepada semua pemerhati. Seterusnya, kami melaksanakan kelas topik tertentu:

class ConcreteSubject implements Subject
{
    private $observers = [];
    private $state;

    public function attach(Observer $observer)
    {
        $this->observers[] = $observer;
    }

    public function detach(Observer $observer)
    {
        foreach ($this->observers as $key => $obs) {
            if ($obs === $observer) {
                unset($this->observers[$key]);
            }
        }
    }

    public function notify()
    {
        foreach ($this->observers as $observer) {
            $observer->update();
        }
    }

    public function getState()
    {
        return $this->state;
    }

    public function setState($state)
    {
        $this->state = $state;
        $this->notify();
    }
}
Salin selepas log masuk

Dalam kelas topik khusus ini, kami mengekalkan senarai pemerhati dan keadaan. Melalui kaedah attach, kita boleh menambah pemerhati ke senarai; melalui kaedah detach, kita boleh mengeluarkan pemerhati dari senarai melalui kaedah pemberitahuan, kita boleh memberitahu semua pemerhati. Apabila keadaan topik berubah, kami memanggil kaedah setState untuk mengemas kini keadaan dan memberitahu semua pemerhati yang melanggan topik tersebut.

Seterusnya, kami mentakrifkan antara muka Pemerhati:

interface Observer
{
    public function update();
}
Salin selepas log masuk

Dalam antara muka ini, kami mentakrifkan kemas kini kaedah, yang digunakan untuk bertindak balas apabila keadaan yang diperhatikan berubah. Seterusnya, kami melaksanakan kelas pemerhati khusus:

class ConcreteObserver implements Observer
{
    private $subject;
    private $state;

    public function __construct(Subject $subject)
    {
        $this->subject = $subject;
        $this->subject->attach($this);
    }

    public function update()
    {
        $this->state = $this->subject->getState();
        echo "Observer state updated: " . $this->state . "
";
    }

    public function getState()
    {
        return $this->state;
    }
}
Salin selepas log masuk

Dalam kelas pemerhati khusus ini, kami menambah pemerhati ke senarai pemerhati subjek melalui kaedah pembina, dan mendapatkan status objek yang diperhatikan dalam kaedah kemas kini, dan melakukan beberapa operasi tindak balas .

Akhir sekali, kami boleh menulis kod ujian untuk mengesahkan cara corak pemerhati berfungsi:

$subject = new ConcreteSubject();
$observer1 = new ConcreteObserver($subject);
$observer2 = new ConcreteObserver($subject);

$subject->setState(1); // 输出:Observer state updated: 1
$subject->setState(2); // 输出:Observer state updated: 2
Salin selepas log masuk

Dalam kod ujian di atas, kami mencipta objek subjek tertentu dan dua objek pemerhati khusus, dan menambah objek pemerhati dalam pemerhati objek subjek senarai. Kemudian, kemas kini keadaan pemerhati dicetuskan dengan menetapkan keadaan objek subjek, dan keadaan dikemas kini adalah output.

Melalui analisis dan contoh kod di atas, kami mempunyai pemahaman yang mendalam tentang pelaksanaan corak pemerhati dalam pengaturcaraan berorientasikan objek PHP. Corak pemerhati boleh membantu kami mencapai gandingan longgar antara objek dan menjadikan sistem lebih fleksibel dan berskala. Dalam pembangunan sebenar, kita boleh menggunakan corak pemerhati mengikut keperluan khusus untuk meningkatkan kualiti reka bentuk dan kecekapan pembangunan sistem perisian.

Atas ialah kandungan terperinci Analisis mendalam corak pemerhati dalam pengaturcaraan berorientasikan objek PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Pengesah Mencipta CakePHP Pengesah Mencipta CakePHP Sep 10, 2024 pm 05:26 PM

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Panduan Ringkas CakePHP Panduan Ringkas CakePHP Sep 10, 2024 pm 05:27 PM

CakePHP ialah rangka kerja MVC sumber terbuka. Ia menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP mempunyai beberapa perpustakaan untuk mengurangkan beban tugas yang paling biasa.

Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Feb 07, 2025 am 11:57 AM

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

See all articles