当前位置:首页 > Web开发 > 正文

这里就要求我所有的通知对象必须要有update操作

2024-03-31 Web开发

我理解的不雅察看者模式就是,当我们触发一个事件的时候,想要把这个操纵报告给我想要报告的东西,让他们都执行这个操纵,就是将他们绑定到这个事件下。

1.界说一个基类(用于添加不雅察看者也就是我想要通知的东西,,还有通知不雅察看者)

EventGenerator.php

<?php abstract class EventGenerator { //存储不雅察看者,因为可以有多个要通知的东西,所以是一个数组 private $observers = array(); //添加不雅察看者,也就是我想要通知的东西 public function addObserver($observer) { $this->observers[] = $observer; } //通知不雅察看者 public function notify() { //取出所有的东西去执行操纵 foreach($this->observers as $observer) { //这里我写一个update要领,这里就要求我所有的通知东西必需要有update操纵,所以一会我会界说一个借口,让所有的不雅察看者强制实现这个要领 $observer->update(); } } } ?>

界说接口文件,让所有不雅察看者实现update要领Observer.php

<?php interface Observer { function update(); } ?>

界说实现不雅察看者模式的文件Event.php

<?php header(‘Content-Type:text/html;charset=utf-8‘); define(‘BASEDIR‘, __DIR___); require ‘Config.php‘; spl_autoload_register(‘Config::autoload‘); //界说事件类担任基类 class Event extends EventGenerator { //当触发这个事件的时候通知所有的不雅察看者 public function trigger() { echo ‘我要开始更新了啊!<br/>\n‘; //基类的通知要领 $this->notify(); } } //添加不雅察看者1 class Observer1 implements Observer { public function update() { echo ‘我是不雅察看者1,我收到你的通知了!我要干我该干的了!<br/>\n‘; } } //添加不雅察看者2 class Observer2 implements Observer { public function update() { echo ‘我是不雅察看者2,我收到你的通知了!我要干我该干的了!<br/>\n‘; } } //下面就要开始测试了! $event = new Event(); //添加不雅察看者到这个事件里 $event->addObserver(new Observer1); $event->addObserver(new Observer2); //执行trigger操纵 $event->trigger(); //这时候就会显示! //我要开始更新了啊! //我是不雅察看者1,我收到你的通知了!我要干我该干的了! //我是不雅察看者2,我收到你的通知了!我要干我该干的了! ?>

更多关于PHP相关内容感兴趣的读者可检察本站专题:《php面向东西措施设计入门教程》、《PHP数组(Array)操纵技巧大全》、《PHP根基语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操纵入门教程》及《php常见数据库操纵技巧汇总》

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/33137.html