Head First-观察者模式,headfirst-观察者_PHP教程
Head First-观察者模式,headfirst-观察者
什么是观察者模式?观察者模式定义了对象之间一对多的关系。
观察者模式中有主题(即可观察者)和观察者。主题用一个共同的接口来通知观察者,主题不知道观察者的细节,只知道观察者实现了主题的接口。
普遍的观察者模式中的推的方式更适合点,下面我们就写一个推的例子,天气站提供一个接口,当天气变化时,会将数据通知给各个看板显示。
<?php //使用接口,类必须实现几个功能注册,删除,通知这几个动作 interface Subject{ public function registerObserver(Observer $o); public function removeObserver(Observer $o); public function notifyObservers(); } interface Observer{ public function update($a,$b,$c); } //各个面板不同将改行为以接口实现 interface DisplayElement{ public function display(); } class Weather implements Subject{ public $observers; public $changed=false; public $a; public $b; public $c; public function __construct(){ $this->observers = array(); } public function registerObserver(Observer $o){ $this->observers[] = $o; } public function removeObserver(Observer $o){ $key = array_search($o,$this->observers); if($key!==false){ unset($this->observers[$key]); } } public function notifyObserver(){ if($this->changed){ foreach($this->observer as $ob){ $ob->update($this->a,$this->b,$this->c); } } } public function setChanged(){ $this->changed = true; } //当数值改变时通知各个观察者 public function measurementsChanged(){ $this->setChanged(); $this->notifyObserver(); } public function setMeasurements($a,$b,$c){ $this->a = $a; $this->b = $b; $this->c = $c; $this->measurementsChanged(); } } class CurrentConditionsDisplay implements Observer, DisplayElement{ public $a; public $b; public $c; public $subject; public function __construct(Subject $weather){ $this->subject = $weather; $this->subject->registerObserver($this); } public function update($a,$b,$c){ $this->a = $a; $this->b = $b; $this->c = $c; $this->display(); } public function display(){ echo $this->a.$this->b.$this->c; } } ?>
我们在这些对象之间用松耦合的方式进行沟通,这样我们在后期维护的时候,可以大大的提高效率。
设计原则:找出程序中会变化的方面,然后将其进行分离;针对接口编程,不针对实现编程;多用组合,少用继承

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



Sebagai bahasa pengaturcaraan back-end yang popular, PHP sangat popular dalam bidang pembangunan web. Fungsi ramalan cuaca ialah senario aplikasi web biasa Melaksanakan fungsi ramalan cuaca berdasarkan PHP adalah agak mudah dan mudah difahami. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi ramalan cuaca. 1. Dapatkan API data cuaca Untuk melaksanakan fungsi ramalan cuaca, anda perlu mendapatkan data cuaca terlebih dahulu. Kami boleh menggunakan API cuaca pihak ketiga untuk mendapatkan data cuaca tepat masa nyata. Pada masa ini, penyedia API cuaca arus perdana di China termasuk "Xinzhiwei" percuma dan

Sejak Disember 2021, telefon mudah alih Huawei & Honor telah melancarkan fungsi widget desktop Vientiane. Banyak fungsi mudah, kawalan desktop yang dioptimumkan secara visual, dsb. telah ditambahkan pada banyak desktop mudah alih pengguna menjelang Ogos tahun ini, dua platform pedagang utama turut membuka data sukan dan kesihatan, data cuaca, data muzik, data sistem, dsb. , membolehkan pengguna menggunakan desktop mudah alih mereka Operasi interaktif lebih mudah, lebih pantas dan lebih menarik, membolehkan pengguna membuat DIY dan mencipta desktop peribadi mereka sendiri. Desktop mudah alih selepas menambah widget Baru-baru ini, ramai pengguna telefon mudah alih Huawei telah melaporkan bahawa mereka tidak jelas tentang cara menambah widget desktop pada telefon mudah alih Huawei dan Honor, mengadu bahawa prosesnya terlalu rumit dan menyusahkan. Untuk membantu semua orang menyelesaikan masalah ini, Qian Shuxian telah menyediakan proses operasi terperinci, berharap dapat

Bagaimana untuk menggunakan JavaWebSocket untuk melaksanakan fungsi ramalan cuaca masa nyata? Dengan populariti Internet dan peranti mudah alih, fungsi ramalan cuaca masa nyata telah menjadi salah satu fungsi penting bagi banyak aplikasi. Menggunakan teknologi JavaWebSocket boleh merealisasikan komunikasi masa nyata dengan mudah dan cepat, memberikan pengguna maklumat ramalan cuaca terkini. Artikel ini akan memperkenalkan cara menggunakan JavaWebSocket untuk melaksanakan fungsi ramalan cuaca masa nyata dan menyediakan contoh kod khusus. Persediaan persekitaran Sebelum memulakan, anda perlu memastikan bahawa anda telah memasang

IT House melaporkan pada 3 November bahawa Google Research dan DeepMind bekerjasama untuk membangunkan model cuaca terkini MetNet-3 Model ini berdasarkan MetNet dan MetNet-2 sebelumnya. Ia boleh meramalkan keadaan cuaca global 24 jam lebih awal termasuk kerpasan, suhu permukaan, kelajuan angin, arah angin dan suhu terasa. IT House mendapati bahawa Google menyebut bahawa model MetNet-3 telah dilaksanakan dalam ramalan cuaca "Perisian Mudah Alih Google" pada platform mudah alih. Model MetNet-3 boleh mencipta ramalan "lancar dan berketepatan tinggi" dengan resolusi spatial 1 hingga 4 kilometer dan selang analisis 2 minit Eksperimen telah membuktikan bahawa keupayaan ramalan MetNet-3 mengatasi model ramalan cuaca fizikal tradisional

Akan ada fungsi ramalan cuaca pada desktop, jadi bagaimana untuk memulihkan ramalan cuaca desktop? Pengguna perlu mengklik Alat Tetingkap pada desktop, kemudian klik Cuaca, dan pilih komponen cuaca. Pengenalan kaedah pemulihan ramalan cuaca desktop ini akan memberitahu anda kaedah operasi khusus Berikut ialah pengenalan terperinci, sila lihat! Bagaimana untuk memulihkan ramalan cuaca desktop Jawapan: Pilih cuaca dalam widget desktop, dan kemudian tambahkannya pada desktop. Kaedah khusus: kaedah ios: 1. Tekan lama skrin Apple, dan kemudian klik tanda + di bahagian atas sebelah kiri. 2. Cari cuaca dan buka apl. 3. Kemudian pilih gaya komponen cuaca dan klik Tambah Widget. 4. Kemudian klik Selesai di bahagian atas sebelah kanan. Kaedah Android: 1. Tekan lama skrin dan klik pada widget. 2. Klik pada langit

Menurut berita pada 3 November, Google Research dan DeepMind bekerjasama untuk membangunkan model cuaca terkini MetNet-3 Model ini berdasarkan MetNet dan MetNet-2 sebelumnya dan boleh membuat ramalan beresolusi tinggi bagi keadaan cuaca global 24 jam lebih awal. , termasuk kerpasan, suhu permukaan, kelajuan angin, arah angin dan suhu terasa. Laman web ini mendapati bahawa Google menyebut bahawa model MetNet-3 telah dilaksanakan dalam ramalan cuaca "Perisian Mudah Alih Google" pada platform mudah alih. Model MetNet-3 boleh mencipta ramalan "lancar dan sangat tepat" dengan resolusi spatial 1 hingga 4 kilometer dan selang analisis 2 minit. Eksperimen telah membuktikan bahawa keupayaan ramalan MetNet-3 mengatasi model ramalan cuaca fizikal tradisional, seperti

Bagaimana untuk mendapatkan maklumat ramalan cuaca bandar menggunakan Python dan API Peta Baidu? Pengenalan: Ramalan cuaca memainkan peranan panduan penting dalam kehidupan seharian kita. Artikel ini akan memperkenalkan cara menggunakan bahasa pengaturcaraan Python dan API Peta Baidu untuk mendapatkan maklumat ramalan cuaca bagi sesebuah bandar, dengan itu membantu kami memahami keadaan cuaca dengan tepat. Pertama, kita perlu mendaftar akaun pembangun Baidu dan membuat aplikasi. Selepas membuat aplikasi, Baidu akan memberikan kami sepasang APIKeys untuk pengesahan kebenaran menggunakan API Peta Baidu. tangkap

Editor |. Dalam era model besar ScienceAI, kesan model meteorologi dan iklim dipacu data secara beransur-ansur mengejar atau bahkan mengatasi model berangka. Walau bagaimanapun, model meteorologi dan iklim berskala besar sedia ada masih mempunyai beberapa masalah. Sebagai contoh, ketekalan fizikal dalam model tidak cukup tinggi, yang mengehadkan keupayaan untuk meramalkan fenomena cuaca dan iklim yang kompleks seperti kerpasan. Selain itu, kesan ramalan angin mencapah tidak memuaskan. Isu-isu ini memerlukan penyelidikan dan penambahbaikan lanjut untuk meningkatkan ketepatan ramalan dan kebolehpercayaan model. Pada masa ini, menggabungkan fizik, dinamik atmosfera dan model pembelajaran mendalam adalah cara penting untuk menyelesaikan masalah kesesakan. Baru-baru ini, pasukan penyelidik Huang Gang dari Institut Fizik Atmosfera, Akademi Sains China, berdasarkan data dan sokongan kuasa pengkomputeran Kemudahan Simulasi Berangka Sistem Bumi (Huan), menganalisis hubungan gandingan antara pembolehubah fizikal dari perspektif
