PHP中如何实现观察者模式?

简介: 【7月更文挑战第2天】PHP中如何实现观察者模式?

PHP中如何实现观察者模式?

观察者模式是一种行为设计模式,允许你定义一种订阅机制,可以在对象状态改变时通知多个依赖对象。以下是一个简单的PHP观察者模式实现:

// Subject(主题)接口
interface Subject {
   
    public function registerObserver(Observer $observer);
    public function removeObserver(Observer $observer);
    public function notifyObservers();
}

// ConcreteSubject(具体主题)类
class ConcreteSubject implements Subject {
   
    private $observers = [];
    private $state;

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

    public function setState($state) {
   
        $this->state = $state;
        $this->notifyObservers();
    }

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

    public function removeObserver(Observer $observer) {
   
        $index = array_search($observer, $this->observers);
        if ($index !== false) {
   
            unset($this->observers[$index]);
        }
    }

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

// Observer(观察者)接口
interface Observer {
   
    public function update(Subject $subject);
}

// ConcreteObserver(具体观察者)类
class ConcreteObserver implements Observer {
   
    private $name;

    public function __construct($name) {
   
        $this->name = $name;
    }

    public function update(Subject $subject) {
   
        echo "{$this->name} received an update: " . $subject->getState() . "<br>";
    }
}

// 使用示例
$subject = new ConcreteSubject();
$observer1 = new ConcreteObserver("Observer 1");
$observer2 = new ConcreteObserver("Observer 2");

$subject->registerObserver($observer1);
$subject->registerObserver($observer2);

$subject->setState("New State");

在这个例子中,我们定义了一个Subject接口和一个ConcreteSubject类来实现主题的功能。我们还定义了一个Observer接口和一个ConcreteObserver类来实现观察者的功能。当ConcreteSubject的状态发生变化时,它会通知所有注册的观察者。

目录
相关文章
|
2月前
|
设计模式 PHP
php设计模式--观察者模式(4.1)面向过程完成页面内容切换
php设计模式--观察者模式(4.1)面向过程完成页面内容切换
19 0
|
2月前
|
设计模式 PHP
php设计模式--观察者模式(4.2)PHP实现观察者模式
php设计模式--观察者模式(4.2)PHP实现观察者模式
22 0
|
设计模式
【PHP-设计模式】观察者模式
【PHP-设计模式】观察者模式
104 0
|
移动开发 PHP 设计模式
|
PHP
PHP设计模式——观察者模式
声明:本系列博客参考资料《大话设计模式》,作者程杰。         观察者模式(有时又被称为发布-订阅模式)。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。
1014 0
|
10天前
|
NoSQL 关系型数据库 MySQL
linux服务器重启php,nginx,redis,mysql命令
linux服务器重启php,nginx,redis,mysql命令
19 1
|
2月前
|
关系型数据库 MySQL PHP
|
1月前
|
Ubuntu 关系型数据库 MySQL
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
22 0
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。